MariaDB帐户可以对数据库进行本地和远程访问吗?

时间:2016-09-28 11:03:55

标签: mysql mariadb

我创建了一个MariaDB数据库用户user。看起来像:

MariaDB [(none)]> select host,user,password from mysql.user;                                                                                                                                                 
+-----------+-------+-------------------------------------------+
| host      | user  | password                                  |
+-----------+-------+-------------------------------------------+
| %         | user  | ***************************************** |
+-----------+-------+-------------------------------------------+

我可以使用

这样的命令从远程计算机连接到数据库
mysql -uuser -hdevops.ok -p mydatabase

这可以按预期工作。我可以使用我的密码登录。

当我在数据库服务器上并尝试连接

[vagrant@devops ~]$ mysql -h127.0.0.1 -uuser -p mydatabase                                            
Enter password: 
ERROR 1045 (28000): Access denied for user 'user'@'localhost' (using password: YES)

我希望%允许从网络中的所有节点(包括localhost)进行访问,但似乎这不是它的工作方式。

是否可以授予此用户本地访问权限?

我可以创建另一个帐户

create user 'myser'@'localhost' identified by '****';

这将允许我访问数据库,但这更像是一种解决方法。

更新

我现在认为这只能通过创建两个帐户'myuser'@'localhost''myuser'@'%'

来实现

%不包含localhost。顺便说一下,127.0.0.1127.0.0.2已解析为localhost,因此%也不会匹配。

没有意义,但看起来这就是它的工作方式。

1 个答案:

答案 0 :(得分:0)

主机字段中的%表示可以使用任何目标主机。

当数据库在127.0.0.1(基于TCP的连接)和localhost连接到本地unix套接字之间产生差异时,有一种特殊情况。

考虑数据库设置skip-networkingbind-address。看到 https://mariadb.com/kb/en/mariadb/configuring-mariadb-for-remote-client-access/

默认情况下,TCP连接通常是禁用 - 根据分发,使用的包裹,这可能会有所不同......

因此,当您输入以下内容时,它应该有效:

mysql -hlocalhost -uuser -p mydatabase

参考文献:

https://dev.mysql.com/doc/refman/5.5/en/connecting.html

  

在Unix上,MySQL程序特别对待主机名localhost,其方式可能与您期望的与其他基于网络的程序相比有所不同。对于与localhost的连接,MySQL程序尝试使用Unix套接字文件连接到本地服务器。

您也可以使用--socket选项。