Linux 下 MySQL 无法访问问题排查基本步骤
问题说明
本文说明云服务器 Linux 上 MySQL 无法访问问题的一般排查步骤。
处理办法
查看 Linux 操作系统是否已经安装了 MySQL$rpm-qamysql
mysql-4.1.7-4.RHEL4.1#说明已经安装了MySQL
检查状态检测 MySQL运行状态:servicemysqldstatus
启动服务:可以用三种方法来启动 MySQL:方法一:使用service命令启动MySQL:servicemysqldstart
方法二:使用 mysqld 脚本来启动 MySQL:/etc/init.d/mysqlstart
方法三:使用safe_mysqld实用程序启动MySQL服务,此方法可以使用相关参数:safe_mysqld&//使用&表示将safe_mysqld放在后台执行。
登陆
修改密码mysqladmin-urootpassword
mysqladmin-urootpassword'kaishi'
这里的“密码”为我们欲新设的密码。系统会提示我们输入旧密码(若是 MySQL 刚安装,则默认密码为空)
如果本机可以登陆了,但是其他机器的客户端登陆报错。比如:ERROR1130(00000):Host'xxx.xxx.xxx.xxx'isnotallowedtoconnecttothisMySQ
Lserver
则首先查看了 iptables 的设置,确认开放了 3306 端口:iptables-AINPUT-ptcp-mtcp--sport3306-jACCEPT
iptables-AOUTPUT-ptcp-mtcp--dport3306-jACCEPT
serviceiptablessave
如果还是无法访问,则可能是 MySQL 的权限问题。则可以通过如下步骤排查:在本机登录mysql-hlocalhost-uroot-pkaishishowdatabases;usemysql;selectHost,User,Passwordfromuser;+-----------------------+------+-------------------------------------------+|Host|User|Password|
+-----------------------+------+-------------------------------------------+|localhost|root|*18F54215F48E644FC4E0F05EC2D39F88D7244B1A|
|localhost.localdomain|root||
|localhost.localdomain|||
|localhost|||
+-----------------------+------+-------------------------------------------+
可以看到如上结果,只有 localhost 才设置了访问的权限。
进入MySQL,创建一个新用户user:格式:grant权限on数据库名.表名用户@登录主机identified by "用户密码"。grantselect,update,insert,[email protected]"kaishi";
查看结果,执行:usemysql;selecthost,user,passwordfromuser;
可以看到在user表中已有刚才创建的user用户。host字段表示登录的主机,其值可以用IP,也可用主机名,将host?段的值改为%就表示在任何客户端机器上能以user用户登录到mysql服务器,建议在开发时设为%。
修改了权限后需要执行如下语句生效:updateusersethost='%'whereuser='sillycat';flushprivileges;