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
mysql -h localhost -u root -p
此时直接用sqlyog或其他工具连接时会出现ERROR 1130:mysql (1130连接错误的有效解决方法)的错误。此时需要修改root账号的远程连接权限。回到liunx中,登录到mysql。修改root用户的权限以通配符%的内容增加主机/IP地址(当然也可以直接增加IP地址)
update user set host = '%' where user ='root';
然后使用以下代码刷新MySQL的系统权限相关表
flush privileges;
最后重启一下mysql服务。即可连接上了。。。。。。。。
远程连接授权补充
mysql>GRANT ALL PRIVILEGES ON 库.表 TO '用户'@'主机' IDENTIFIED BY '密码' WITH GRANT OPTION;
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
原文:https://blog.csdn.net/yuxiangjie12/article/details/75452279