0

我最近在 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'.

为什么在尝试连接到 MariaDB 时使用“localhost”作为默认主机?

主机的'localhost''127.0.0.1'需要保留吗?

作为这个问题的背景,我不确定“主机”和“主机名”这两个术语是什么意思,我只是想“定制”我学习 MariaDB 命令的经验,所以也许我在完成上述步骤时出错了。

4

3 回答 3

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.

于 2019-02-01T08:44:13.853 回答
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
于 2019-02-01T10:37:34.170 回答
-2

You must create properly user on system 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

So, a database didn't find user nusr and it will not to handle user nusr because isn't created on system wide.

Hostname is from IP address named as "mydomain.com", but "host" can be IP address or name lookup host "mydomain.com".

于 2013-09-19T12:48:23.883 回答