最近两天在给客户搞内网部署的问题 客户给我发了个 root Delete 我就莫名其妙的把root用户删掉了 结果最后又添加完用户后 exit后忘记授权了 于是我发现我登录不上MySQL了 抓紧百度啊 还等啥呢 最后发现在MySQL的 my.cnf文件中 添加
- skip-grant-tables 命令可以跳过enter Password登录
太好了 这下一把抓啊 赶紧添加后 重启MySQL service mysqld restart
最后进来后 赶紧把新生成的用户进行赋权 如 用户名称叫test_user 那么赋权命令则是
- grant all on testdb.* to test_user@'%' identified by 'Ab12345';
- 这里对上方命令进行个讲解 给test_user所有来自testdb库的数据表操作权限 密码为passowrd;
- 如果想要赋予只是查询的权限 可以 将all 更换为操作关键字 如只给查询权限 grant select on testdb.* to test_user@'%' identified by 'passowrd'
- 赋予多个权限写法 grank select,insert on testdb.* 如果是具体到某个表可将 testdb.* 写为 on testdb.testtabel 如果是全部数据库 则是 on . 代表所有库 所有表
- 这里的 @后面跟的是允许哪些地址访问操作MySQL 用户名@允许访问地址; 如果是本地可以写为 '用户名'@'localhost' 如果是指定ip可以写为 '用户名'@'指定ip' 如果是指定IP段范围 可以用%来代替 如 '用户名'@'192.168.43.%' 也可以范围是 '用户名'@'192.168.%.%'
- 删除权限 revoke all on testdb.* from test_user@'%';
- 查看某个用户权限 show grants for '用户'@'IP地址'
好了 这下新用户权限问题解决了 那么之前创建的root用户呢 得给他创建出来啊 那么操作用户命令
新建命令: create user 'test_user'@'localhost' identified by 'passowrd'; -- 允许本地连接
create user 'test_user'@'192.168.43.%' identified by 'passowrd'; -- 允许IP为192.168.43...的连接 create user 'test_user'@'%' identified by 'passowrd'; -- 允许所有ip连接
删除命令: drop user '用户名'@'IP地址';
修改命令 rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
修改密码 set global validate_password_policy=LOW; set password for '用户名'@'IP地址'=Password('新密码');
如果不知道用户名与ip地址的话 可以使用 select user,host from mysql.user;语句查看
注意:操作后需要执行 FLUSH PRIVILEGES 语句。