首页 > 数据库 > 其他综合 >

阿里云安装MySQL以后,MySQL无法远程连接问题解决

2018-08-07

阿里云安装MySQL以后,MySQL无法远程连接问题解决。MySQL安装默认创建的root用户仅支持本地连接操作,ssh连接阿里云服务器,再mysql -u root -p命令连接数据库的话,被认定为远程连接,不是本地连接,提示连接失败。

原因:

MySQL安装默认创建的root用户仅支持本地连接操作,ssh连接阿里云服务器,再mysql -u root -p命令连接数据库的话,被认定为远程连接,不是本地连接,提示连接失败

\

注意:大家有没有注意到,在报错的最后提示using password:YES;这说明使用的密码是正确的,但是没有连接权限,这就是因为MySQL安装默认创建的root用户仅支持本地连接操作,不支持远程连接

关于连接权限讲解

分析发现MySQL数据库对用户的控制是有登陆权限设置的,其中如下图所示,MySQL user表中的host属性是用来控制这用户的登陆方式的

(有些情况下更改配置后,需要重启生效)

命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';

说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

例子: CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';

CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';

CREATE USER 'pig'@'%' IDENTIFIED BY '123456';

CREATE USER 'pig'@'%' IDENTIFIED BY '';

CREATE USER 'pig'@'%';

以下截图为MySQL数据库中默认创建的mysql数据库user表数据(该表专门用来管理MySQL数据库登录用户信息)

解决思路:

那就将root用户的host字段改成%就好了啊!或者自己重新创建一个用户专门用于数据库操作切记将host字段设置为%才能支持远程连接

解决方案:

1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables

这一行配置让 mysqld 启动时不对密码进行验证

2、重启 mysqld 服务:servive mysqld restart

3、使用 root 用户登录到 mysql:mysql -u root

4、切换到mysql数据库,更新 user 表:

-- 更新root用户信息

update user set hosr='%'authentication_string = password('root'), password_expired = 'N', password_last_changed = now() where user = 'root';

-- 重新插入一条用户信息

insert user .......................

注意:该步骤需要注意几个点

1.既可以更新root用户host信息,让其支持远程登录

2.又可以复制root用户信息为insert,改一下host,user属性,插入一条新的用户信息(此处可借助数据库连接工具,可远程连接也不用输入密码即可连接成功)

3.在之前的版本中,密码字段的字段名是 password,5.7版本改为了 authentication_string

5、退出 mysql,编辑 /etc/my.cnf 文件,删除skip-grant-tables的内容

6、重启 mysqld 服务,再用新密码登录即可

大功告成!此时就可以用root用户或者自己新创建的用户进行远程连接了。

最后附一条

MySql取消密码强度验证功能

一、修改MySql配置文件(my.cnf)

一般情况下,MySql的配置文件 my.cnf 会在 /etc/ 目录下,如果没有,可以使用以下命令查找位置:

$ sudo find / -name my.cnf

编辑配置文件:

$ sudo vi /etc/my.cnf

在文件末尾添加以下内容:

plugin-load=validate_password.so

validate-password=OFF

保存退出

二、重启mysqld服务

重启服务,以使得配置文件生效:

$ sudo service mysqld restart

三、登录mysql验证

使用命令登录验证配置文件是否生效:

$ mysql -u用户名 -p密码

随意修改成一个简单密码,查看是否成功,命令就不写出来了

相关文章
最新文章
热点推荐