无法使用 MySQL Workbench 访问 Mariadb (Centos 7)

Posted

技术标签:

【中文标题】无法使用 MySQL Workbench 访问 Mariadb (Centos 7)【英文标题】:Unable to access Mariadb (Centos 7) with MySQL Workbench 【发布时间】:2016-08-15 00:16:58 【问题描述】:

我在Centos 7 上安装了Mariadb,我正在尝试使用mysql Workbench 访问它。

我做了以下事情:

启动 MariaDB 执行以下命令:

 systemctl start mariadb.service

自动启动 MariaDB 执行以下命令:

 systemctl enable mariadb.service

启动 MariaDB 后(只执行一次),执行以下命令:

  /usr/bin/mysql_secure_installation

运行时我删除了匿名用户登录

我们还需要更改端口: /etc/my.cnf.d/server.cnf # Mariadb 网络设置

[mysqld]
# comment out the bind address
#bind_address=127.0.0.1 

现在我会得到一个错误

[root@localhost ~]# mysql -u root -p mcellblock -h 192.168.159.163 -P 3306
Enter password:
ERROR 1130 (HY000): Host '192.168.159.163' is not allowed to connect to this MariaDB server

然后我启用了连接权限:

  GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
  GRANT ALL PRIVILEGES ON *.* TO 'mcb'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
  FLUSH PRIVILEGES;

  MariaDB [mcellblock]> select User, Host, password from mysql.user where Host <> 'localhost';
  +------+-----------------------+-------------------------------------------+
  | User | Host                  | password                                  |
  +------+-----------------------+-------------------------------------------+
  | root | localhost.localdomain | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
  | root | 127.0.0.1             | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
  | root | ::1                   | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
  | root | %                     | *2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19 |
  | mcb  | %                     | *A071D903A1ABA9752B05C16C573A095C80A7AFAD |
  +------+-----------------------+-------------------------------------------+
  5 rows in set (0.00 sec)

现在,当我尝试通过终端访问时,它可以工作:

  $ mysql -u mcb -p mcellblock -h 192.168.159.163 -P 3306
  Enter password:
  Welcome to the MariaDB monitor.  Commands end with ; or \g.
  Your MariaDB connection id is 28
  Server version: 5.5.47-MariaDB MariaDB Server

但是当我尝试通过 MySQL Workbench 访问时出现错误:

 Please check
  1) Check that mysql is running on server 192.168.159.163  ** IT IS
  2) Check that mysql is running on port 3306 ** I can connect to it via the terminal so I assume it is
  3) Check mcb has the rights to connect to 192.168.159.163 from your address ** It should as its setup for %
  4) Make sure you are both providing a password if needed and using the correct password for 192.168.159.163 ** the passwords are the same

当我在本地安装 MySQL Workbench 时,它可以工作,但不能远程工作。

有谁知道我缺少什么或如何解决这个问题?

【问题讨论】:

检查forums.mysql.com/read.php?10,622573,622587 【参考方案1】:

如果你说的都是正确的,看起来更像是网络问题,所以,请执行:

netstat -punta | grep LISTEN

找到 mariadb 正在使用的端口并检查它是否类似于:

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      18137/mysqld

这里真正重要的是第 3 列,如果你看到了,那就少了一个可能的问题,如果没有,这意味着,基本上,你的 mysql 服务器正在本地监听。

继续出现网络问题,也可能是防火墙阻止了您的连接,因此请确保一切都已关闭。

【讨论】:

【参考方案2】:

原来是centos机器上的防火墙问题。使用 telnet IP_ADDRESS 3306 检查后。我无法通过我的其他 VM 或 Windows 访问。禁用防火墙后它起作用了。

@Alex 我之前也检查过端口并且它正在正确监听。感谢您的意见。

【讨论】:

如果您不尝试从远程连接访问 mysqld 服务器,则不应在防火墙中打开端口。 localhost (127.0.0.1) 不需要在 3306 上打开防火墙端口来访问 mysql。如果您在防火墙上打开端口,您将允许远程访问您的 mysql 服务器。如果您不需要允许,那就太糟糕了。【参考方案3】:

我从另一个类似的问题 (https://serverfault.com/questions/240015/how-do-i-allow-mysql-connections-through-selinux) 中了解到,无法连接到 mysql 也可能是由于 SELinux。如果您不必从远程连接访问 mysqld,则不应在防火墙上打开端口。在 SEL 中允许访问 MySQL 的命令是:

检查 SELinux

sestatus

查看 mysql 进程上设置了哪些标志

getsebool -a | grep mysql

允许 Apache 通过 SELinux 连接到远程数据库

setsebool selinuxuser_mysql_connect_enabled 1 

使用 -P 选项使更改永久化。如果没有此选项,布尔值将在重新启动时重置为 0。

setsebool -P selinuxuser_mysql_connect_enabled 1

【讨论】:

以上是关于无法使用 MySQL Workbench 访问 Mariadb (Centos 7)的主要内容,如果未能解决你的问题,请参考以下文章

无法从 MySQL Workbench 连接到 RDS MySQL 数据库

无法从 SQL WORKBENCH 连接到 AWS RDS mysql

MacOS:无法运行 MySQL Workbench

无法通过 Workbench 连接到 RDS MySQL 数据库

如何在 phpmyadmin/MySQL Workbench 中修改只能使用 FlameRobin 访问的数据库

MySql Workbench 8.0 无法远程连接