我已经创建了一个 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)
我希望 %
允许从网络中的所有节点访问,包括本地主机,但它似乎不是这样工作的。
是否可以授予该用户本地访问权限?
我当然可以创建另一个帐户
create user 'myser'@'localhost' identified by '****';
这将允许我访问数据库,但感觉更像是一种解决方法。
更新
我现在认为这只能通过创建两个帐户 'myuser'@'localhost'
和 'myuser'@'%'
%
不包括 localhost
。顺便说一句,127.0.0.1
和 127.0.0.2
解析为 localhost
,因此它们也不匹配 %
.
没有意义,但看起来这是它应该工作的方式。
最佳答案
主机字段中的 %
表示任何目标主机都是可能的。
有一种特殊情况,当数据库在 127.0.0.1
(基于 TCP 的连接)和连接到 本地 unix 套接字的 localhost
之间产生差异时.
考虑数据库设置 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
On Unix, MySQL programs treat the host name localhost specially, in a way that is likely different from what you expect compared to other network-based programs. For connections to localhost, MySQL programs attempt to connect to the local server by using a Unix socket file.
您也可以使用 --socket
选项。
关于mysql - MariaDB 帐户可以对数据库进行本地和远程访问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39745656/