我创建了一个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.1
和127.0.0.2
已解析为localhost
,因此%
也不会匹配。
没有意义,但看起来这就是它的工作方式。
答案 0 :(得分:0)
主机字段中的%
表示可以使用任何目标主机。
当数据库在127.0.0.1
(基于TCP的连接)和localhost
连接到本地unix套接字之间产生差异时,有一种特殊情况。
考虑数据库设置skip-networking
和bind-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
选项。