MySQL8安装、忘记密码、远程登陆
服务器(CentOS7)上mysql8 安装
安装包:mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar
解压缩:
root@hostname# tar -xvf mysql-8.0.13-1.el7.x86_64.rpm-bundle.tar
然后依次安装:
root@hostname# rpm -ivh mysql-community-common-8.0.13-1.el7.x86_64.rpm
root@hostname# rpm -ivh mysql-community-libs-8.0.13-1.el7.x86_64.rpm
root@hostname# rpm -ivh mysql-community-devel-8.0.13-1.el7.x86_64.rpm //或许会安装失败,可已跳过
root@hostname# rpm -ivh mysql-community-libs-compat-8.0.13-1.el7.x86_64.rpm
root@hostname# rpm -ivh mysql-community-client-8.0.13-1.el7.x86_64.rpm
root@hostname# rpm -ivh mysql-community-server-8.0.13-1.el7.x86_64.rpm
完成后查看状态 :
root@hostname# service mysqld status
启动MySQL:
root@hostname# service mysqld start
设置随系统自启动:
root@hostname# systemctl enable mysqld.service
开放端口,添加:
root@hostname# firewall-cmd --zone=public --add-port=3306/tcp --permanent (--permanent永久生效,没有此参数重启后失效)
重新载入:
root@hostname# firewall-cmd --reload
查看root用户初始密码:
root@hostname# grep 'temporary password' /var/log/mysqld.log
使用初始密码登陆mysql后修改root密码:
mysql>SET PASSWORD FOR 'root'@'localhost'= "XXXXXX";
MySQL8忘记root密码解决方案
在 /etc/my.cnf 中 mysql 模块下 添加:skip-grant-tables
wq保存。
重启MySQL服务:
root@hostname# service mysqld restart
登陆root,此时不需要密码,
进入后
mysql>use mysql;
mysql> update user set authentication_string = '' where user = 'root';
先将root用户密码置空
然后将/etc/my.cnf 中 mysql 模块下 添加的:skip-grant-tables 删除
重启mysql
#mysql -u root -p
因为没有密码,所以直接Enter,登陆成功
mysql>ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'XXXXX';
修改root密码为XXXXX,加密方式为:mysql_native_password
MySQL8用户远程登录失败解决方案
mysql> CREATE USER 'scistor'@'%' IDENTIFIED BY ' XXXXX '; //创建普通用户scister ,密码为XXXXX
mysql> GRANT ALL ON *.* TO 'scistor'@'%'; //为普通用户开放远程访问权限
但此时还不能远程访问,Navicat for MySQL11.0.9的加密方式为mysql_native_password,而新建的用户没有指定加密方式,所以远程登录失败,
mysql> ALTER USER 'scistor'@'%' IDENTIFIED WITH mysql_native_password BY ' XXXXX ';
指定加密方式为mysql_native_password 后,就可以远程登录了
MySQL> flush privileges;
切记,刷新权限
如果已经安装了MySQL和没有执行慢速关机就使用innodb_fast_shutdown标志,只需转到MySQL目录/var/lib/mysql/即可,并删除日志文件:ib_logfile0ib_logfile1