MySQL 8.0 误删了root用户怎么办
MySQL 8.0 误删了root用户怎么办
修改配置文件
修改配置文件,让其可以无账号登录
默认的文件为: /etc/my.cnf
添加:skip-grant-tables
重启服务
service mysql restart
添加用户信息
use mysql;
添加用户
insert into user(User,authentication_string,ssl_cipher,x509_issuer,x509_subject) values('root','','','','');
添加权限
update user set Host='localhost',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;
去掉配置文件的内容,重启服务
重新登录,使用root账号,设置密码。
mysql
use mysql;
alter user 'root'@'localhost' identified with mysql_native_password by 'root@12345';
授权远程连接
默认情况下,mysql用户是不允许远程连接访问数据库的,只能在本地访问。
mysql> SHOW DATABASES;
mysql> USE mysql;
mysql> SELECT 'host' FROM user WHERE user='root'; #查看user表的host值
mysql> UPDATE user SET host = '%' WHERE user ='root; #修改host值
mysql> flush privileges; #刷新MySQL的系统权限相关表