为什么'localhost'是尝试连接MariaDB时使用的默认主机?

时间:2013-07-24 13:00:38

标签: host hostname mariadb

我最近在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命令的经验,所以也许我已经完成了上面的步骤。

3 个答案:

答案 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”。