CentOS7.2 安装mysql5.7初始密码问题总结

CentOS 7之后的版本yum的默认源中使用MariaDB替代原先MySQL。

1、下载mysql的源

wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm

2、安装yum库

yum localinstall -y mysql57-community-release-el7-7.noarch.rpm

3、安装MySQL

yum install -y mysql-community-server

4、启动MySQL服务

systemctl start mysqld.service(启动MySQL服务)
systemctl restart mysqld.service(重启MySQL服务)
systemctl stop mysqld.service(停止MySQL服务)

5、MySQL5.7加强了root用户的安全性,因此在第一次安装后会初始化一个随机密码,以下为查看初始随机密码的方式,执行完该命令后则会看到一组随机字符串为初始密码。

grep 'temporary password' /var/log/mysqld.log

但是我安装完成的时候,/var/log/mysqld.log里面没有任何东西,整个文件为0个Byte。查看/etc/my.cnf文件里面(如下图),然后我到该文件目录下查看,发现该文件还是空文件。没办法了,只能采用终极解决办法了。
这里写图片描述

6、跳过mysql授权直接登录了。将以下两行代码加到/etc/my.cnf文件的[mysqld]下面。然后重启mysql服务

skip-grant-tables(跳过授权,只需要这句就好)
skip-networking(本机运行,关闭MySQL的TCP/IP连接方式)

7、登录mysql,输入以下代码 直接回车。会进入到mysql中(出现Welcome mysql)

mysql -uroot

8、修改密码(这里有两个坑)
(坑1)跳过授权方式进入mysql后,不能使用set的修改方式,不然会出现ERROR 1290的错误

set password for 'root'@'localhost'=password('123456');(错误)

( 坑2 )在mysql5.7以后已经将原来的password字段改为了authentication_string了,不然会出现ERROR 1054的错误

update user set password=password('123456') where user='root' and host='localhost';(错误)

只能使用update去修改密码,而且需要用数据库名.表名去修改。如下代码所示:

update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost';

修改成功之后会出现Query ok,的提示。则表示密码修改成功了。可以quit(退出)mysql 重新登录了

9、重新登录
删除掉/etc/my.cnf文件下的skip-grant-tables。然后重启MYSQL服务器。输入以下代码。然后输入修改的密码即可登录。

mysql -uroot -p

不过此处还有个比较坑的问题就是,如此设置密码之后登陆mysql,能够成功进入,但是运行任何指令都会提示以下错误:
ERROR 1820 (HY000): You must SET PASSWORD before executing this statement

大概错误的意思是密码未设置,奇怪的是明明使用修改后的密码登陆进来,但提示必须设置密码,此时可以尝试运行

SET PASSWORD ='123qwe';

然后重新登录,即可操作其他指令。

10、远程连接mysql
此时直接用sqlyog或其他工具连接时会出现ERROR 1130:mysql (1130连接错误的有效解决方法)的错误。此时需要修改root账号的远程连接权限。回到liunx中,登录到mysql。修改root用户的权限以通配符%的内容增加主机/IP地址(当然也可以直接增加IP地址)

update user set host = '%' where user ='root';

然后使用以下代码刷新MySQL的系统权限相关表

flush privileges;

最后重启一下mysql服务。即可连接上了。。。。。。。。

你可能感兴趣的:(mysql,liunx)