mysql数据库密码忘了,但又不想改root密码怎么办?

Mysql 数据库忘记密码,又不敢更改密码破坏线上项目。
1、 以root身份进入服务器
2、 在mysql的配置文件my.cnf中[mysqld]下添加一行代码:
  skip-grant-tables
  一定要添加在[mysqld]紧接着下一行。否则不成功。vim保存wq退出
3、 重启mysql:service mysqld restart 让修改的东西生效
4、 mysql –u root 就可以直接进入数据库了。
5、 修改密码是:
  mysql> use mysql;
  mysql> UPDATE user SET Password = password (‘新密码’) WHERE User = ‘root’ ;
  mysql>flush privileges;
6、 因为不能随意更改,所以我想到创建一个新的用户,并且用root给他所 有的权限。
7、 创建用户的代码是 mysql>create user ‘新用户’@’%’ identified by ‘用户密码’;
  但直接创建会报错:
  ERROR 1290:The mysql server is running with the –skip-grant-tables option so it cannot execute this statement
  出现的话执行 flush privileges;刷新权限
  再创建就不会出错
8、 给用户所有权限。
  loclhost、127.0.0.1都要执行
  grant all privileges on *.* to 'chai'@'127.0.0.1' identified by '666666';
  grant all privileges on *.* to 'chai'@'localhost' identified by '666666';
  # 赋予新用户,从本地操作所有数据库.所有数据表的所有权限
 
  grant all privileges on *.* to 'chai'@'%' identified by '666666';
  # 赋予新用户,从外部操作所有数据库.所有数据表的所有权限(没有外部客户端的IP限制,但本地有限制)

  flush privileges;
9、 把my.cnf的配置改回来 重启mysql 再登录新用户。

 

注意事项:

创建用户时,如果后面是@'127.0.0.1',则只能从本地连接。上述的'localhost'也必须执行。
创建用户时,如果后面是@'%',就可以从外部(局域网或外网)连接;而且还可以从本地连接,且没有密码。
创建用户后,该用户就可以连接MySQL了,但默认什么权限都没有,想要操作数据库,就必须进行授权。
创建用户时,实际上是在mysql.user表中添加一条记录,Host(客户端地址)和User(用户名)共同确定记录的唯一性。
授权时,如果对应的记录(客户端地址和用户名)已经存在,就更新该记录;否则,会添加一条记录。
创建用户和授权,实际上都是操作mysql.user表。

 

posted @ 2020-03-04 17:20  ZzUuOo666  阅读(266)  评论(0编辑  收藏  举报