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

标签 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)

我希望 % 允许从网络中的所有节点访问,包括本地主机,但它似乎不是这样工作的。

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

我当然可以创建另一个帐户

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

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

更新

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

% 不包括 localhost。顺便说一句,127.0.0.1127.0.0.2 解析为 localhost,因此它们也不匹配 % .

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

最佳答案

主机字段中的 % 表示任何目标主机都是可能的。

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

考虑数据库设置 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

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/

相关文章:

mysql - 将表列转换为行并使用一个表中的值(如果它不存在于另一个表中)

MySQL 无法创建事件

mysql - 无法通过 Workbench 或 MS Access 更新 MySQL View 中的数据

mysql - 如果不同表中的 2 列匹配,则插入列

mysql - 风 sails js : select records from mysql?

mysql - 如何在 Zend Framework 2 Zend\Db 中执行 FULL JOIN

mysql - 在 MariaDB 10.2.15 中使用 CASE WHEN DATE 语句

php - Laravel:一般错误:1615 准备语句需要重新准备

mysql - SSIS ODBC 源未在 SQL Server 代理作业中保存密码

docker - 执行 docker-compose up -d 后容器未启动