无法从 Windows 和 Linux (CentOS7) 连接到我的远程 MySQL 服务器
Posted
技术标签:
【中文标题】无法从 Windows 和 Linux (CentOS7) 连接到我的远程 MySQL 服务器【英文标题】:Can't Connect to my remote MySQL server from both Windows and Linux (CentOS7) 【发布时间】:2016-02-13 10:21:42 【问题描述】:我无法连接到托管在 CentOS7 服务器上的远程 mysql 服务器。
它在 1 天之前运行良好,它只是停止工作并开始向我抛出这些错误:
从我的窗口框:
Connection Failed: [HY000][MySQL][ODBC 3.51 Driver]Can't connect to MySQL server on '10.103.23.234' (10090)
从我的其他 CentOS 服务器:
ERROR 2003 (HY000): Can't connect to MySQL server on '10.103.23.234' (113)
因此,我查找了有关我遇到的问题的热门搜索结果,并找到了许多建议的解决方案。
我已经将我的服务器的 ip 绑定到 /etc/my.cnf 的 MySQL 配置文件
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
bind-address=10.103.23.234
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
由于挫折,我确实删除-创建了用户并授予 MySQL 用户的权限
MariaDB [(none)]> SHOW GRANTS FOR 'faultanalytics'@'%';
+---------------------------------------------------------------------------------------------------------------+
| Grants for faultanalytics@% |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'faultanalytics'@'%' IDENTIFIED BY PASSWORD '*82CB5B45DC157D1466E8A2F031A55B06D9C8F9FA' |
| GRANT ALL PRIVILEGES ON `outageTicket`.* TO 'faultanalytics'@'%' |
+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
MariaDB [(none)]> SELECT * FROM mysql.db WHERE user='faultanalytics' AND host='%' AND db='outageTicket'\G;
*************************** 1. row ***************************
Host: %
Db: outageTicket
User: faultanalytics
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: N
References_priv: Y
Index_priv: Y
Alter_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Execute_priv: Y
Event_priv: Y
Trigger_priv: Y
1 row in set (0.00 sec)
ERROR: No query specified
但我注意到下面这张表有些奇怪,我只能看到用户 'faultanalytics'@'%' 的“USAGE”权限
MariaDB [(none)]> SELECT * from information_schema.user_privileges WHERE GRANTEE='\'faultanalytics\'@\'%\'';
+----------------------+---------------+----------------+--------------+
| GRANTEE | TABLE_CATALOG | PRIVILEGE_TYPE | IS_GRANTABLE |
+----------------------+---------------+----------------+--------------+
| 'faultanalytics'@'%' | def | USAGE | NO |
+----------------------+---------------+----------------+--------------+
我在想,这就是我无法远程连接到我的 MySQL 服务器的原因吗?
检查了我的端口
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 10.103.23.234:3306 0.0.0.0:* LISTEN
【问题讨论】:
MySQL 默认使用 3306 端口。那里有什么变化吗(例如路由器配置、防火墙等)?您似乎已经拥有获得连接的适当权限。你检查过 MySQL 的错误日志吗?对您的数据库服务器尝试nmap
命令并验证 MySQL 端口是否打开。另外,您是唯一有权访问此服务器的个人吗?
@janschweizer 不幸的是,我的任何机器上都没有 telnet,但我可以通过 MySQL 服务器进行 ssh。
@JCm:那么,mysql -h <yourserver> -u <username> -p
命令允许您从 Linux shell 进行连接?
@janschweizer no 我无法通过 mysql -h 您是否验证了防火墙中的端口 3306 已打开? CentOS 会在重新启动时重新加载防火墙规则,因此如果您在防火墙设置中添加了非永久性规则,那么当您重新启动服务器时它会被刷新。
对于快速修复,请参阅此 SO 帖子中公认的优秀答案:centos 7 - open firewall port
如果您想了解有关 FirewallD 的更多信息,可以在此处找到 FirewallD 手册:https://fedoraproject.org/wiki/FirewallD,并在此处找到一个很好的深入教程:https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-using-firewalld-on-centos-7
【讨论】:
是的,你明白了。我之前可能会停止我的防火墙,但几周前我有一个服务器重新启动,这可能会重新启动我的防火墙并导致我出现问题。我现在必须允许访问我的 mysql。【参考方案2】:经过进一步研究,我遇到了另一个具有类似经验的 *** 问题
Accessing a mysql database from external host/ip? (ie: mysql workbench)
所以就像 Yoosaf Abdulla 在那个帖子中的回答一样,我尝试停止我的服务器的防火墙和 woalah!我成功连接了。 然后做他的解决方案来解决应该解决问题。
【讨论】:
以上是关于无法从 Windows 和 Linux (CentOS7) 连接到我的远程 MySQL 服务器的主要内容,如果未能解决你的问题,请参考以下文章
0基础开箱即用Linux部署项目(基于Cent OS 7.4)
在Windows系统和Linux服务器安装MongoDB和基本使用