mysql创建用户及权限管理

时间:2022-04-30 08:53:35

1使用root身份登陆MySQL

Liunx下(ps:我用的是centos7.1) 首先以root身份登录上去后执行操作mysql -uroot -p 然后Enter 输入你的密码后 出现welocame to the mysql就说明登录成功了。


2创建用户

登录后执行 insert into user (Host,User,Password) values('localhost','newuser',password('newpwd'));附:后来发现5.7版本mysql的user表里面没有password这个选项 然后网上搜了下这个语句create user 'newuser'@'localhost' identified by 'newpwd'这2行代码的意思就是说往user表里面创建了一个名称newuser密码为newpwd的用户。PS:localhost表示只能在本地访问, 如果要想在远程访问就把localhost改成%。


3查询一下这个用户是否被创建

成功执行查询语句 Select User From mysql.user Where User='newuser' 看看有没有这个用户如果有就说明创建成功了,没有的话自己再检查下这个还是比较简单的。


4给用户授予权限

grant 权限 on数据库.* to '名称'@'主机名'

例如grant CREATE on user.* to '名称'@'主机名' 意思是把user数据库的全部全部表给了这个用户 但是这个用户只能有创建权限

例如 grant all on user.address to '名称'@'主机名' 意思是把user数据库的的address表给了这个用户,并且这个用户有对这个表操作的全部权限。


5设置与更改用户密码

命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword");

例子: SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");


6废除某个用户的权限

revoke all on user.address from 'newuser'@'localhost'; 废除这个用户的对address表的所有权限。

revoke drop on user.address from 'newuser'@'localhost'; 废除这个用户对address表的删除权限。

例子: REVOKE SELECT ON *.* FROM 'pig'@'%';

注意: 假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%', 则在使用REVOKE SELECT ON *.* FROM 'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select 权限.

具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看.


7删除某个用户

drop user 'newuser'@'localhost';修改权限的时候一定要执行一下FLUSH PRIVILEGES 刷新一下权限;我就遇到过这个问题,后来百度了一下这个某个老外遇到问题的文章http://*.com/questions/5555328/error-1396-hy000-operation-create-user-failed-for-jacklocalhost%3E。

mysql什么时候需要flush privileges

flush privileges 命令本质上的作用是将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里。MySQL用户数据和权限有修改后,希望在"不重启MySQL服务"的情况下直接生效,那么就需要执行这个命令。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效。而不必冒太大风险。