在命令行输入mysql -u root –p,输入密码,或通过工具连接数据库时,经常出现下面的错误信息,详细该错误信息很多人在使用MySQL时都遇到过。

ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password: YES)

通常从网上都能找到解决方案:

**

1.停止服务:停止MySQL服务;

windows

net stop mysql

linux

service mysqld stop

2.跳过验证:修改MySQL安装目录下的my.ini配置文件,使登录时跳过权限检查;

到mysql根目录找到mysql配置文件

vim my.ini #在my.ini,mysqld下添加一行,使其登录时跳过权限检查
skip_grant_tables

3.修改密码:启动MySQL服务,登录MySQL,此时提示输入密码,输入任意密码回车即可进入MySQL。

#登录mysql
mysql -u root -p

然后通过SQL语句修改root用户的密码;

#将数据库切换至mysql库
mysql> USE mysql;
#修改密码
mysql> UPDATE user SET password=PASSWORD(‘newpasswd’)WHERE user=’root’;
#刷新MySQL权限相关的表
mysql> flush privileges;
mysql> exit;

4.重启服务:将my.ini文件中加入的跳过权限语句删除或加#号注释。重启服务,使用修改后的密码登录即可。

本地改数据库授权

mysql -uroot -p use mysql;

select host,user from user where user=’root’;

如果上面查询到有信息,但host为localhost或其他值,就需要根据实际需求来更新表信息

update user set host=’%’ where user=’root’ # 如果想任何的IP地址都可以使用root用户来远程登陆(注意如果上面的查询语句,查询出来有多条,就需要做一些处理,比如多加一个条件如 where user=’root’ and host=’localhost’或先删除其他人记录只保存一条user=’root’的记录)

远程授权

GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;

grant all privileges on 库名.表名 to '用户名'@'IP地址' identified by '密码' with grant option;