mysql需要对登陆的用户进行管理,所有用户的信息都存放在名为mysql的数据库的user表中:
密码不会明文显示,都是通过对密码做md5运算得到的。
创建用户
create user 用户名@登陆主机/ip identified by '密码';
登录主机设置为%,表示可以从任意主机登陆,这种做法非常不推荐
如果创建时报错:ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement。
这是因为你的mysql设置了免密码登录,只需要刷新一下配置就可以了:
flush privileges;
例子:
修改用户密码
修改当前用户的密码:
set password=password('密码');
root用户修改其他用户密码:
set password for 用户名@主机名=password('密码');
例子:
用户权限
用户刚创建时,没有权限对数据库进行操作,数据库列表中没有其他数据库,我们需要对该用户进行权限的管理。数据库权限有很多,详细查看可以看这个:6.2.2 MySQL提供的权限_MySQL 8.0 参考手册
授权
grant 权限列表 on 库.对象名 to 用户名@登陆主机/ip
权限列表,多个权限用逗号分开:grant select on ...grant select , delete , create on ....grant all on ... -- 表示赋予该用户在该对象上的所有权限*.* : 代表本系统中的所有数据库的所有对象(表,视图,存储过程等)库 .* : 表示某个数据库中的所有数据对象 ( 表,视图,存储过程等 )
回收权限
revoke 权限列表 on 库.对象名 from 用户名@主机名;
使用上和grant一样。
查看用户权限
show grants for 用户@主机名;
删除用户
drop user 用户名@主机名;