为了演示,找个测试环境来操作,千万不要线上这么搞 pkill mysqld 关闭掉mysql
跳过MySQL的权限表启动MySQL服务: --skip-grant-tables启动mysql
/usr/local/mysql8013/bin/mysqld_safe --defaults-file=/data/mysql8/my8.cnf --skip-grant-tables &
将密码置空:
root@localhost [(none)]>update mysql.user set authentication_string='' where user="root" and host="localhost";
Query OK, 1 row affected (0.06 sec)
Rows matched: 1 Changed: 1 Warnings: 0
root@localhost [(none)]>
pkill mysqld 关闭掉mysql
再次启动mysql服务
[root@localhost ~]# /usr/local/mysql8013/bin/mysqld --defaults-file=/data/mysql8/my8.cnf &
无密码登录MySQL服务并设置新的密码:
root@localhost [(none)]>select version();
+-----------+
| version() |
+-----------+
| 8.0.13 |
+-----------+
root@localhost [(none)]>alter user user() identified by 'jist558@wei';
[root@localhost ~]# mysql -uroot -p'jist558@wei' -e "select version();" mysql: [Warning] Using a password on the command line interface can be insecure. +-----------+ | version() | +-----------+ | 8.0.13 | +-----------+
密码写入.my.cnf文件就可以mysql直接登录mysql窗口:
[root@localhost ~]# cat .my.cnf
[mysql]
prompt="\u@\h:\p \R:\m:\s[\d]>"
no-auto-rehash
user=root
password=jist558@wei
[root@localhost ~]# mysql -e "select version();"
+-----------+
| version() |
+-----------+
| 8.0.13 |
+-----------+
演示完毕