我最近在Windows 7上的VirtualBox中在Fedora 19上安装了MariaDB。
当我跑步时:
MariaDB [(none)]> SELECT user, host, password FROM mysql.user;
我明白了:
+------+----------------------+-------------------------------------------+
| user | host | password |
+------+----------------------+-------------------------------------------+
| root | localhost | ***************************************** |
| root | my.hostname | ***************************************** |
| root | 127.0.0.1 | ***************************************** |
| nusr | my.hostname | ***************************************** |
+------+----------------------+-------------------------------------------+
my.hostname
是我在Fedora中更改默认主机名的主机名。
我用:
创建了用户'nusr'CREATE USER 'nusr'@'my.hostname' IDENTIFIED BY 'my_password';
当我尝试使用以下命令连接到MariaDB时
[me@my ~]$ mysql -u nusr -p
Enter password:
我明白了:
ERROR 1045 (28000): Access denied for user 'nusr'@'localhost' (using password: YES)
我猜这是因为它指的是'nusr'@'localhost'
而不是'nusr'@'my.hostname'
。
为什么'localhost'是尝试连接MariaDB时使用的默认主机?
主持人的'localhost'
和'127.0.0.1'
是否需要保留?
作为这个问题的背景,我不太确定“主机”和“主机名”的含义是什么意思,我只是想“定制”我学习MariaDB命令的经验,所以也许我已经完成了上面的步骤。
答案 0 :(得分:1)
问题很老,但是..
ERROR 1045 (28000): Access denied for user 'nusr'@'localhost' (using password: YES)
我猜这是因为它指的是'nusr'@'localhost'而不是'nusr'@'my.hostname'。
是。
为什么尝试连接到MariaDB时默认主机为“ localhost”?
因为假定您将从数据库所在的同一台计算机( localhost )连接到数据库。
如果将用户定义为@my.hostname
,则意味着将通过名为my.hostname
的另一台计算机建立与数据库的连接。
是否需要保留主机的“ localhost”和“ 127.0.0.1”?
仅当您希望能够从那里访问数据库时。
在该设置中,如果删除root
用户@localhost和@ 127.0.0.1,则将无法从数据库所在的虚拟箱内部登录数据库。而且,只有从名为my.hostname
的计算机连接时,您才可以访问。但是要使其正常工作,您必须确保数据库环境知道my.hostname
。
答案 1 :(得分:0)
MariaDB服务器(也是MySQL)以特殊方式对待localhost
。在其他软件将其视为回送地址127.0.0.1
的别名的情况下,MariaDB会将其解释为与服务器的UNIX域套接字连接。默认情况下,此套接字文件位于/var/lib/mysql/mysql.sock
中。
要通过网络连接到本地服务器,请使用-h 127.0.01
参数。这告诉mysql
客户端通过环回网络接口而不是套接字进行连接。
无论其他授予如何,MariaDB始终会将localhost
转换为本地套接字连接。如果要防止这种情况,仅允许通过网络访问,请删除以localhost
作为主机的用户。
您可以通过执行以下查询来查看数据库中的所有用户:
SELECT * FROM mysql.user
答案 2 :(得分:-2)
您必须在系统Fedora 19上正确创建用户:
[root@localhost ~]# useradd nusr
[root@localhost ~]# passwd nusr
Changing password for user fedora.
New UNIX password:# set password
Retype new UNIX password:# confirm
passwd: all authentication tokens updated successfully.
[root@localhost ~]# exit # logout
因此,数据库找不到用户nusr
,并且它不会处理用户nusr
,因为它不是在系统范围内创建的。
主机名来自名为“mydomain.com”的IP地址,但“主机”可以是IP地址或名称查找主机“mydomain.com”。