开发者社区> 问答> 正文

云服务器 ECS Linux 下 MySQL 无法访问问题排查基本步骤

本文说明云服务器 ECS Linux 上 MySQL 无法访问问题的一般排查步骤。

展开
收起
开发者说 2019-07-15 09:26:30 833 0
1 条回答
写回答
取消 提交回答
    1. 查看 Linux 操作系统是否已经安装了 MySQL
      $ rpm -qa mysql
      mysql-4.1.7-4.RHEL4.1
      
      # 说明已经安装了 MySQL
    2. 检查状态
      检测 MySQL 运行状态:
      service mysqld status
    3. 启动服务:
      可以用三种方法来启动 MySQL:
      1. 方法一:使用 service 命令启动 MySQL:
        service mysqld start

         

      2. 方法二:使用 mysqld 脚本来启动 MySQL:
        /etc/init.d/mysql start
      3. 方法三:使用 safe_mysqld 实用程序启动 MySQL 服务,此方法可以使用相关参数:
        safe_mysqld& //使用&表示将safe_mysqld放在后台执行。
    4. 登陆
    5. 修改密码
      mysqladmin -u root password
      mysqladmin -u root password 'kaishi'

      这里的“密码”为我们欲新设的密码。系统会提示我们输入旧密码(若是 MySQL 刚安装,则默认密码为空)

     

    如果本机可以登陆了,但是其他机器的客户端登陆报错。比如:

    ERROR 1130 (00000): Host 'xxx.xxx.xxx.xxx' is not allowed to connect to this MySQ
    L server

    则首先查看了 iptables 的设置,确认开放了 3306 端口:

    iptables -A INPUT -p tcp -m tcp --sport 3306 -j ACCEPT
    iptables -A OUTPUT -p tcp -m tcp --dport 3306 -j ACCEPT
    service iptables save

     

    如果还是无法访问,则可能是 MySQL 的权限问题。则可以通过如下步骤排查:

    1. 在本机登录
      mysql -h localhost -u root -pkaishi
      show databases;
      use mysql;
      select Host, User, Password from user;
      +-----------------------+------+-------------------------------------------+
      | Host | User | Password |
      +-----------------------+------+-------------------------------------------+
      | localhost | root | *18F54215F48E644FC4E0F05EC2D39F88D7244B1A |
      | localhost.localdomain | root | |
      | localhost.localdomain | | |
      | localhost | | |
      +-----------------------+------+-------------------------------------------+

      可以看到如上结果,只有 localhost 才设置了访问的权限。
    2. 进入 MySQL ,创建一个新用户 user 
      格式:grant 权限 on 数据库名.表名 用户@登录主机 identified by "用户密码"。
      grant select,update,insert,delete on easyview.* to sillycat@192.168.10.103 identified by "kaishi";
    3. 查看结果,执行:
      use mysql;
      select host,user,password from user;

      可以看到在user表中已有刚才创建的user用户。host字段表示登录的主机,其值可以用IP,也可用主机名,将host字段的值改为%就表示在任何客户端机器上能以user用户登录到mysql服务器,建议在开发时设为%
    4. 修改了权限后需要执行如下语句生效:
      update user set host = '%' where user = 'sillycat';
      flush privileges;
    2019-07-22 11:28:27
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像