刚才更改了mysql的root用户密码后就报了【1130 Host 'localhost' is not allowed to connect to this MySQL server】错。
原因:
1.报这个错是没给改后的root用户授权,所以没有权限登录。
2.但我觉得也可能是因为我更改后的密码直接是明文而不像mysql用语句或安装时创建是密文方式的,所以登录的时候无法获取到连接
解决:
【方案一】跳过授权来登录,然后删除root用户,然后再
1.先把本地mysql服务关闭掉,然后通过在mysql安装目录下打开cmd运行以下跳过授权命令
mysql>mysqld --skip-grant-tables
执行过程需要一些时间,直到出现以上信息则表示mysql启动成功。注:不要关掉这个窗口,关闭的话mysql服务则会被关闭掉
2.再执行命令进行登录
mysql>mysql -uroot -p密码
3.删除user表中的root用户,并创建与授权。
mysql>use mysql;
mysql>delete from user where user='root';
mysql> CREATE USER 'root'@'localhost' IDENTIFIED BY 'root';
4.在这个过程中可能会出现以下错误
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot exe
1290错误需要执行将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里的命令
mysql>flush privileges;
ERROR 1396 (HY000): Operation CREATE USER failed for 'root'@'localhost'
1396错误的原因是由于之前账号信息清理不干净。需要drop本地root信息
mysql>drop user 'root'@'localhost';
5.授权
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
mysql> CREATE USER 'root'@'%' IDENTIFIED BY 'root';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
mysql>flush privileges;