|
我们想连mysql
# mysql -u root -p 发现root密码不对,忘记root密码了,应该怎么?
解决方法:
# vim /etc/my.cnf在[mysqld]里面
插入一条语句: skip-grant-tables (有的系统需要在/etc/my.cnf.d/mysql-server.cnf 里面添加)
#service mysqld restart
# mysql -u root -p 使用空密码就进去了
mysql> show databases; (查看里面有一个数据库mysql)
mysql> use mysql; (打开 mysql数据库)
mysql> show tables; (查看里面有一个 user表)
mysql>select user,host from user; (看看user表中都有哪些用户,是否有root用户,有时遇到黑客,会给你删掉root用户,如果没有root用户需要新建root用户,如果有root用户,就只需要更新密码了)
创建root用户:
use mysql;
insert into user(User,authentication_string,ssl_cipher,x509_issuer,x509_subject) values('root','','','','');
update user set Host='%',select_priv='y', insert_priv='y',update_priv='y',Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',create_user_priv='y' where user='root';commit;
mysql> desc user; (查看user表字段,其中有一个字段authentication_string)
mysql8.0以下版本更新密码:
mysql> update user set authentication_string=password('123456') where user='root';
mysql8.0以上版本修改root密码:
update user set authentication_string='' where user='root';
FLUSH PRIVILEGES;
alter user 'root'@'%' identified by '你的密码'; (建议用下面那条语句)
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的密码'; (mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,默认加密规则是caching_sha2_password, 所以,使用上面那行语句会使用默认的加密规则,而这种规则,Navicat低版本不支持,所以我们用下面的语句指定加密规则为mysql_native_password,这样低版本的Navicat就可以支持了。)
FLUSH PRIVILEGES;
成功修改
#vim /etc/my.cnf (删除原来加入的一行语句)
#service mysqld restart
#mysql -u root -p (用新设置的密码就能进去了)
|
|