MySQL如何创建用户以及如何进行授权,具体操作步骤是什么?下面我就给大家分享一下。
显示所有用户
在mysql这个数据库下面有一张user表存放的MySQL的用户的数据,查询方式如下:
use mysql;//使用mysql数据库
select * from user;//查询user表所有记录
可以看到如下结果:
上表就会列出所有的用户及权限;
创建用户
create user 'user_name'@'host' identified by 'password';
其中:
user_name:表示需要创建的用户的名称,也就是该用户的登录账号;
host:表示这个用户可以从那台机器上登录,如果只允许本机登录,可以设置为localhost,如果允许所有的远程机器登录,则可以设置为%,如果只允许特定IP登录,就可以设置具体的IP地址;
password:该用户登录的密码;
例子如下:
create user 'test'@'localhost' identified by '123456';//创建一个只能本地登录的test用户
create user 'test'@'192.168.0.123' identified by '123456';//创建一个只能是特定IP登录的test用户
create user 'test'@'%' identified by '123456'//创建一个可以任何IP地址登录的test用户
用户创建完成后,需要授权才能使用;
授权用户
grant 'privileges' on 'databaseName'.'tableName' to 'username'@'host';
其中:
privileges:表示权限,可以有select、update、delete、insert等,如果是需要全部权限,使用ALL
'databaseName'.'tableName':表示要具体授权给哪个数据库的哪张表,可以使用通配符* ,比如所有数据库的所有权限就应该写为*.*
'username'@'host':表示授权给具体的用户
例如:
grant select,insert on test.test to 'test'@'%';//授权test库中的test表的select和insert权限给test用户
grant all on test.test to 'test'@'%';//授权test库中的test表的所有权限给test用户
grant all on test.* to 'test'@'%';//授权test库中所有表的所有权限给test用户
注意:
以上命令不能给授权的用户的授权权限,如果需要让该用户可以授权,那么需要使用以下命令:
grant all on test.* to 'test'@'%' with grant option;//授权test库中所有表的所有权限给test用户,并且该用户可以授权
撤销用户权限
revoke privilege on databasename.tablename from 'username'@'host';
参数解释同上。
例如:
revoke all on test.* from MOCHOU'@'%';
注:
假如在给用户'MOCHOU'@'%'授权的时候是这样的(或类似的):grant select on test.* to 'MOCHOU'@'%',则在使用revoke select on *.* from 'MOCHOU'@'%';命令并不能撤销该用户对test数据库中所有表的SELECT 操作。相反,如果授权使用的是grant select on *.* to 'MOCHOU'@'%';则revoke select on test.* from 'MOCHOU'@'%';命令也不能撤销该用户对test数据库中所有表的select权限。
删除用户
drop user 'username'@'host';
更改密码
set password for 'username'@'host' = password('newPassword');
如果是当前用户:
set password = password("new password");
例如:
set password for 'MOCHOU'@'%' = password('123456');