【发布时间】: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
-u -p 如上所述建立连接...