目录
- 一、新建一个用户
- 1、创建用户命令:
- 二、为用户授权
- 1、给用户授权命令
- 2、给 hh 用户授可查、改的权限。
- 3、在给 hh用户增加一个查看视图的权限,并刷新
- 三、撤销用户权限
- 1、撤销用户权限命令
- 2、撤销 joytom 用户的查看视图的权限
- 四、删除一个用户
- 1、删除用户命令
- 2、删除用户
- 五、修改用户的密码
- 六、密码过期和锁定用户
- 1、关于密码过期
- 2、关于 mysql5.7 锁定用户
- 七、权限常用关键字
- 总结
一、新建一个用户
老板:给我新建一个用户joytom,密码设置为123321,并任意远程主机都能访问,五分钟完成,实现不了就给我提桶走人!
小王会心一笑,对创建用户的命令早已滚瓜烂熟了,于是熟练的操作了起来:
1、创建用户命令:
CREATE USER ‘username‘@'host' IDENTIFIED BY ‘password';
2、创建用户
mysql> create user 'hh'@'%' identified by '123456'; Query OK, 0 rows affected (0.01 sec)
查看一下是否创建成功:
mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | caona | % | | hh | % | | root | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+ 6 rows in set (0.00 sec)
二、为用户授权
创建完用户后……
老板:好,比以前有进步了,那你再给joytom这个用户设置一个权限,只允许查询和修改copytest数据库中的student表。
小王信手拈来,又熟练的操作了一波:
1、给用户授权命令
grant privileges on database.tablename to “username”@'host';
privileges:用户的操作权限,如 SELECT,INSERT,UPDATE 等,如果要授予所的权限则使用 ALL。
2、给 hh 用户授可查、改的权限。
mysql> grant select,update on mysql.user to 'hh'@'%'; Query OK, 0 rows affected (0.02 sec)
3、在给 hh用户增加一个查看视图的权限,并刷新
mysql> grant SHOW VIEW on mysql.user to 'hh'@'%'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK编程客栈, 0 rows affected (0.01 sec)
三、撤销用户权限
老板:咳咳,很好,现在 joytom 不是有三个权限了么(查询,修改,查询视图),那你把查询视图的权限给去掉,只留查询和修改。
小王心中暗喜,这我都学了,很基础的啊……
1、撤销用户权限命令
revoke privileges ON database.tablename FROM ‘username‘@'host';
撤销(revoke)的和授予(grant)的基本一样,除了 revoke(对应 grant)和 from(对应 to)
2、撤销 joytom 用户的查看视图的权限
mysql> revoke SHOW VIEW on mysql.user from 'hh'@'%'; Query OK, 0 rows affected (0.01 sec) mysql> flush privileges; Query OK, 0 rows affected (0.01 sec)
再次查看:
mysql> show grants for 'hh'@'%'; +----------------------------------------------------+ | Grants for hh@% | +----------------------------------------------------+ | GRANT USAGE ON *.* TO `hh`@`%` javascript | | GRANT SELECT, UPDATE ON `mysql`.`user` TO 开发者_NewSQL`hh`@`%` | +----------------------------------------------------+ 2 rows in set (0.00 sec)
发现已经没了查看视图的权限。
grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。
四、删除一个用户
老板:把 joytom 这个用户删掉让我看看。
小王:好嘞,40 秒完事。
1、删除用户命令
drop user username@host
2、删除用户
先查看一下现www.devze.com在的所有用户:
mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | caona | % | | hh | % | | rjavascriptoot | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+ 6 rows in set (0.00 sec)
删除 hh:
mysql> drop user hh@'%'; Query OK, 0 rows affected (0.01 sec)
再次查看,发现已经没了 joytom 这个用户:
mysql> select user,host from user; +------------------+-----------+ | user | host | +------------------+-----------+ | caona | % | | root | % | | mysql.infoschema | localhost | | mysql.session | localhost | | mysql.sys | localhost | +------------------+-----------+ 5 rows in set (0.00 sec)
五、修改用户的密码
老板:把 joytom 这个用户密码修改一下。
小王:好嘞老板。
mysql5.*版本使用如下语句:
要想为匿名账户指定密码,可以使用SET PASSWORD或UPDATE。在两种情况中,一定要使用PASSWORD()函数为密码加密
在Windows/Unix中使用PASSWORD的方法:
mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd'); mysql> SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');为匿名账户指定密码的另一种方法是使用UPDATE直接修改用户表。
在Windows和Unix中的过程是相同的。
下面的UPDATE语句同时为两个匿名账户指定密码:
mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd') WHERE User = ''; mysql> FLUSH PRIVILEGES;mysql8.*版本使用如下语句:
1、 修改用户登录密码
ALTER USER 'caona'@'%' IDENTIFIED WITH MYSQL_NATIVE_PASSWORD BY '123456';
六、密码过期和锁定用户
老板大喜:非常好非常好,加薪 2k,继续努力,另外给其它同事讲一下密码过期和锁定用户的问题。
感谢老板,我会继续努力,我这就去整理一下课件。
1、关于密码过期
在 MySQL5.6.6 版本起,增加了 password_expired 功能,它允许设置 MySQL 数据库用户的密码过期时间。这个特性已经添加到 mysql.user 数据表,它的默认值是”N”,表示已禁用密码过期功能
强制设置为密码过期:
强制设置密码过期后,虽然能够登陆,但是一切权限都为空了。
2、关于 mysql5.7 锁定用户
在创建的时候锁定用户:
已存在的时候锁定用户:
解锁账号:
七、权限常用关键字
老板:现在你对 mysql 的权限管理掌握的还算可以了,咳咳,今天下班前给我整理一个权限常用关键字,整理不好就加会班吧。
小王想,幸亏这个我在学的时候就已经整理过啊,看样今天不用加班了!
权限 | 意义 |
ALL [PRIVILEGES] | 设置除GRANT OPTION之外的所有简单权限 |
ALTER | 允许使用ALTER TABLE |
ALTER ROUTINE | 更改或取消已存储的子程序 |
CREATE | 允许使用CREATE TABLE |
CREATE ROUTINE | 创建已存储的子程序 |
CREATE TEMPORARY TABLES | 允许使用CREATE TEMPORARY TABLE |
CREATE USER | 允许使用CREATE USER, DROP USERTnvqPXZ, RENAME USER和REVOKE ALL PRIVILEGES。 |
CREATE VIEW | 允许使用CREATE VIEW |
DELETE | 允许使用DELETE |
DROP | 允许使用DROP TABLE |
EXECUTE | 允许用户运行已存储的子程序 |
FILE | 允许使用SELECT...INTO OUTFILE和LOAD DATA INFILE |
INDEX | 允许使用CREATE INDEX和DROP INDEX |
INSERT | 允许使用INSERT |
LOCK TABLES | 允许对您拥有SELECT权限的表使用LOCK TABLES |
PROCESS | 允许使用SHOW FULL PROCESSLIST |
REFERENCES | 未被实施 |
RELOAD | 允许使用FLUSH |
REPLICATION CLIENT | 允许用户询问从属服务器或主服务器的地址 |
REPLICATION SLAVE | 用于复制型从属服务器(从主服务器中读取二进制日志事件) |
SELECT | 允许使用SELECT |
SHOW DATABASES | SHOW DATABASES显示所有数据库 |
SHOW VIEW | 允许使用SHOW CREATE VIEW |
SHUTDOWN | 允许使用mysqladmin shutdown |
SUPER | 允许使用CHANGE MASTER, KILL, PURGE MASTER LOGS和SET GLOBAL语句,mysqladmin debug命令;允许您连接(一次),即使已达到max_connections。 |
UPDATE | 允许使用UPDATE |
USAGE | “无权限”的同义词 |
GRANT OPTION | 允许授予权限 |
总结
到此这篇关于如何添加一个mysql用户并给予权限的文章就介绍到这了,更多相关添加mysql用户并给权限内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
精彩评论