mysql用户与授权

  • 1.创建用户
insert into mysql.user(Host,User,Password) values("localhost","test",password("123456"));
  • 2.用户授权
权限 on 数据库.* to 用户名@登录主机 identified by "密码";

grant all privileges on testDB.* to test@localhost identified by "123456"; //all privileges 所有权限

注:授权test用户拥有testDB数据库的所有权限(指定数据库的所有权限) | @"%"表示对所有非本地主机授权,不包括localhost(127.0.0.1)

flush privileges; //刷新系统权限表
grant select,update,create,drop,delete on testDB.* to test@"%" identified by "123456";

注:授权test用户拥有对testDB数据库select,update,create,drop,delete权限(指定数据库的部分权限)

  • 3.修改用户密码
update mysql.user set Password = password("新密码") where User = "test" and Host = "localhost";

# version >= 8.0
# alter user 'username'@'%' identified with mysql_native_password by 'password';

flush privileges;
  • 4.删除用户
delete from mysql.user where User="test" and Host="localhost";
# version >= 8.0
# drop user 'username';
flush privileges;

2020.09.07更新


mysql 5.7以后,增强了密码管理,安装时不再会有密码设置框。(linux) 设置初始密码,需要运行:

  • 步骤1
# 一定要使用sudo运行,然后按照提示,依次进行设置。
sudo mysql_secure_installation
  • 步骤2
# 一定要用sudo 运行,然后输入上一步设置的密码,进入数据库。
sudo mysql -uroot -p 
  • 步骤3
# 修改mysql的密码验证插件
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin IN ('unix_socket', 'auth_socket');

# 刷新权限就生效了
FLUSH PRIVILEGES;

注意

1.以上操作请不要用于生产环境。

2.如果只是设置密码,按照步骤1操作即可,若要解决非sudo命令连接数据库(mysql workbench类的数据库软件无法连接),就需要做完3个步骤。

3.此操作在linux环境下验证通过。(mysql Ver 15.1 Distrib 10.1.37-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2)


2022年05月07日更新


  • mysql 8账户管理
# 添加账户
create user '<用户名>'@'%' identified by '<密码>';

# 修改密码
alter user '<用户名>'@'%' identified by '<新密码>';

# 删除账户
drop user '<用户名>'@'%';

# 权限授予
grant select on <库名>.* to '<用户名>'@'%';

# 刷新权限
flush privileges;