我已经看过很多教程,回答过很多问题,但仍然无法让它发挥作用。
我使用了以下很好的例子:MariaDB 拒绝远程连接 但仍然没有连接...不过谢谢删除感谢所有的步骤和这个完美的模板!XD
我在 CentOS 7 上安装了 MariaDB,所以不像其他大多数系统那样是 Ubuntu。然后设置两个用户,其中一个用于本地主机使用,另一个用于 phpMyAdmin,该用户可以通过 phpMyAdmin 和 SSH @ localhost 登录。然后我添加了另一个用户作为我的连接服务器的登录名。
用户添加如下:
CREATE USER 'clust3r1ogin'@'%' IDENTIFIED BY ''; And GRANT all permissions.
本地连接可以正常工作吗?
不,我无法以用户身份通过 ssh 连接服务器:
[root@zeus ~]# mysql -u clust3r1ogin -p
Enter password:
ERROR 1045 (28000): Access denied for user 'clust3r1ogin'@'localhost' (using password: YES)
其他本地主机用户工作正常......
您是否已验证用户已被正确添加?
我想是这样:
MariaDB [(none)]> SELECT User, Host FROM mysql.user WHERE Host <> 'localhost';
+--------------+-----------+
| User | Host |
+--------------+-----------+
| clust3r1ogin | % |
| root | 127.0.0.1 |
| root | ::1 |
+--------------+-----------+
3 rows in set (0.00 sec)
您解除防火墙的封锁了吗?
是的,否则我会得到另一个错误?但我确实运行了:firewall-cmd --zone=public --add-port=3306/tcp --permanent
我确实对其进行了一些修改,使其只允许特定的 IP 地址连接到该端口。
您是否检查过 my.cnf 文件的设置是否正确?
my.cnf 中的错误设置(/etc/my.cnf)
可能会导致其拒绝连接。这些是 skip-networking 和 bind-address。我的文件如下所示:
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
您检查过其他配置文件吗?
是的。他们也没有冒犯的台词。
telnet 能工作吗?
是的。
[root@titan ~]# telnet zeus.xxx.xxx 3306
Trying xxx.xxx.xxx.xxx...
Connected to zeus.mairel.com.
Escape character is '^]'.
Y
5.5.5-10.1.22-MariaDBAYm9rS)q?�QQ%`98N_q<tVmysql_native_passwordConnection closed by foreign host.
服务器使用什么接口?
似乎仅限于本地:
[root@zeus ~]# netstat -ntlup | grep mysql
tcp6 0 0 :::3306 :::* LISTEN 1198/mysqld
您记得重新启动吗?是的。我在所有尝试之间重新开始使用它:
service mariadb restart
我不明白到底出了什么问题。我敢打赌这是一些配置问题,但目前还没有找到解决办法……
作为删除建议我添加
[mysqld]
bind-address = ::
提交my.cnf
但没有运气...
当我使用我的其他本地主机登录进行远程访问时,将HOST
参数更改为%
Wildcard 后仍然出现相同的错误:
Unable to connect to the MySQL host “zeus”. Connection failed with error: Access denied for user 'local_user'@'titan' (using password: YES)
答案1
问题如下。用户是使用该SSL Required
选项创建的。关闭该选项可解决所有连接问题!
答案2
为了测试目的,我需要设置远程 MySQL。
我正在使用 ubuntu,我必须改变
bind-address = 0.0.0.0
代替
bind-address = 127.0.0.1
我的在/etc/mysql/mariadb.conf.d/50-server.conf
文件中。
我确实通过以下方式找到了它:
$ cd /etc/mysql
$ grep bind-address *
$ grep bind-address */*
$ grep bind-address */*/*
按照这个方法查找。它可能在,也可能不在/etc/mysql
。也请查看顶层目录下面。
另外搜索grep
和skip-network
,如果找到,请将其注释掉或删除。如果您必须添加bind-address
,则很可能它有
skip-networking
配置文件中的行。再次使用grep
来找到它。
然后,为了检查,登录到另一台机器并运行命令
$ mysql -u user-name -h server-ip-address -p
看看它是否允许您通过这种方式连接。
答案3
禁用 selinux,解决所有连接问题