MySQL密码忘记

如果登录的时候出现了ERROR 1045等问题。
这可能是因为数据库中用户密码的问题。所以我们可以跳过数据权限验证,重新设置一下。
找到你的MySQL配置文件my.cnf vim打开

root@kevin:~$ vim /etc/my.cnf    //这是我的路径(注:windows下修改的是my.ini)

在[mysqld]的段中加上一句:

skip-grant-tables

skip-grant-tables的意思是跳过权限认证
退出保存,重启MySQL服务

root@kevin:~$ service mysql restart

等待一会后

root@kevin:~$ mysql -uroot -p
#将数据库切换至mysql库
mysql> use mysql;
#修改密码
mysql> update user set password=PASSWORD('newpasswd')WHERE user='root'; 
#刷新MySQL权限相关的表
mysql> flush privileges;
mysql> exit;

记得把先前的MySQL配置文件my.cnf,skip-grant-tables,删掉保存,然后再次重启MySQL服务,就可以使用刚刚设置的密码登录了。

解决MySQL设置密码后不需要密码就能登录问题

原因:因为数据库里面有空用户
解决方法:

mysql> use mysql
mysql> delete from user where user = '';
mysql> flush privileges;
mysql>quit;

重启MySQL服务,问题解决。

MySQL拒绝访问

错误提示:1130-host . is not allowed to connect to this MySql server,MySQL。
这是由于Mysql配置了不支持远程连接引起的,首先连接mysql

将Host设置为通配符%
Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。 user=root Host=localhost,表示只能通过本机客户端去访问。而%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果Host=%,表示所有IP都有连接权限。

注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产环境的IP进行设置;

root@kevin:~$ mysql -uroot -p
mysql> use mysql
mysql> update user set host = '%' where user = 'root'; 
mysql>flush privileges; //刷新MySQL的系统权限相关表

如果报错 ERROR 1062 (23000): Duplicate entry '%-root' for key 'PRIMARY'
说明host已经有了%这个值 直接运行命令:flush privileges;

Last modification:January 25, 2021
如果觉得我的文章对你有用,请随意赞赏