CentOS 下 mysql 数据库无法访问的处理方式

本地连接数据库

在contOS 下安装mysql之后本地链接报错问题解决方法,首先我们按照步骤一步一步的来检查。

1、检查是否已经安装了mysql数据库

  1. [root@zkm ~]# rpm -qa | grep mysql

如果没有安装,使用yum安装如下:

  1. yum install mysql-server -y

也可以参考服务器搭建LNMP环境一文进行安装。

2、启动服务

我们通过输入 service mysqld start 命令就可以启动我们的mysql服务,
或者通过service mysqld restart重启服务。

3、设置开机启动

我们在使用mysql数据库时,都得首先启动mysqld服务,我们可以 通过 chkconfig --list | grep mysqld命令来查看mysql服务是不是开机自动启动,如:

  1. [root@zkm ~]# chkconfig --list | grep mysqld
  2. mysqld 0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭

我们发现mysqld服务并没有开机自动启动,我们当然可以通过 chkconfig mysqld on 命令来将其设置成开机启动,这样就不用每次都去手动启动了

  1. [root@zkm ~]# chkconfig mysqld on
  2. [root@zkm ~]# chkconfig --list | grep mysql
  3. mysqld 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭

通常情况在安装mysql之后就设置了用户名和密码了,如果没有设置,请参考上面提示的《服务器搭建LNMP环境》一文设置。
同时我们需要在防火墙中配置数据库端口,这里是3306。
还需要在安全组策略中设置。数据库端口3306。
详情请参考 《阿里云Centos配置iptables防火墙》
《Centos服务器iptables防火墙开放ftp端口》

设置好端口之后通常情况下是可以正常链接数据库的。如果还出现如下的报错信息:

4、处理错误

方法操作很简单,如下:

  1. /etc/init.d/MySQL stop
  2. mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
  3. mysql -u root mysql
  4. mysql>use mysql ;
  5. mysql> UPDATE user SET Password=PASSWORD("newpassword") where USER="root" and host="root" or host="localhost";//把空的用户密码都修改成非空的密码就行了。
  6. mysql> FLUSH PRIVILEGES;
  7. mysql> quit
  8. mysql -uroot -p
  9. Enter password: <输入新设的密码newpassword>

这样问题就解决了!
而且此时的数据库便可以通过内网访问了;

远程连接

1、检查整体流程是否连通

首先,mysql数据库远程连接的端口通常默认是3306,先要检查安全组策略是否通过了当前端口,接下来要检查服务器的防火墙是否通过了该端口。在这两者都是畅通的情况下,数据库启动状态。需要在mysql库中的user表中添加一条数据,其中Host字段的值为%;其操作步骤如下:

1、登陆mysql数据库

  1. mysql -u root -p

查看user表并添加远程连接用户将权限改为ALL PRIVILEGES

  1. mysql> use mysql;
  2. Database changed
  3. mysql> grant all privileges on *.* to root@'%' identified by "password";
  4. Query OK, 0 rows affected (0.00 sec)
  5. mysql> select host,user,password from user;
  6. +--------------+------+-------------------------------------------+
  7. | host | user | password |
  8. +--------------+------+-------------------------------------------+
  9. | localhost | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
  10. | 192.168.1.1 | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
  11. | % | root | *A731AEBFB621E354CD41BAF207D884A609E81F5E |
  12. +--------------+------+-------------------------------------------+
  13. 3 rows in set (0.00 sec)
  14. mysql> FLUSH PRIVILEGES;
  15. mysql> quit;

其中grant all privileges on *.* to root@'%' identified by "password";是新增ALL PRIVILEGES权限的用户
FLUSH PRIVILEGES;更新权限

此时就可以通过远程连接我们的数据库了。

评论: