如果只能使用root用户,会存在安全隐患。这时,需要使用MySQL用户管理。
1.用户
1.1用户信息
所有的用户信息都存储在mysql数据库的user表中
查看user信息:
select * from user \G;
查看相关信息:
host:表示这个用户可以从哪个主机登录,如果是localhost,表示只能从本机登录
user:用户名
authentication_string:用户密码通过caching_sha2_password插件加密后的
*_priv:用户拥有的各种权限
1.2创建用户
语法:create user ‘用户名’ @ ‘登陆主机/ip’ identified by ‘密码’;
例:
新建一个用户其实就是向user表中插入数据。
可以使用这个新用户进行mysql本地登陆,但是不能进行远程登陆。
1.3删除用户
drop user ‘用户名’@’’登陆主机’;
1.4创建一个允许远程登陆的用户
create user ‘用户名’@’%’ identified by ‘123456’;
创建一个允许从任何主机登陆的用户。
1.5修改用户密码
自己改自己的密码:
set password=password(‘新密码’);
root用户修改指定用户的密码:
set password for ‘用户名’@’主机名’=password(‘新密码’);
1.6刷新
在每次对用户进行操作后,通过flush privileges进行刷新。
2.数据库权限
2.1给用户权限
grant 权限列表 on 库.表名 to ‘用户名’@’登陆位置’ [identified by ‘密码’];
identified by是可选,若用户存在是修改用户密码,否则是创建用户。
新用户默认能看到的数据库:
root用户所能看到的数据库:
将root下的root_test库的全部权限给新用户:
grant all on root_test.user to ‘lzl’@’localhost’;
此时,新用户就能看到root_test库中的表和表中数据。
也能对表中数据进行修改,插入等操作。
2.2查看用户权限
show grants for ‘用户名’@’登陆位置’;
2.3回收权限
revoke 权限列表 on 库,对象名 from ‘用户名’@’登陆位置’;
例:
回收新用户的对root_test数据库的插入权限
此时,新用户的权限就会发生变化
无法进行insert