如何添加一个mysql用户并给予权限详解
一、新建一个用户
老板:给我新建一个用户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`@`%` | | GRANT SELECT, UPDATE ON `mysql`.`user` TO `hh`@`%` | +----------------------------------------------------+ 2 rows in set (0.00 sec)
发现已经没了查看视图的权限。
grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。
四、删除一个用户
老板:把 joytom 这个用户删掉让我看看。
小王:好嘞,40 秒完事。
1、删除用户命令
drop user username@host
2、删除用户
先查看一下现在的所有用户:
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)
删除 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 USER, 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用户并给权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
基于一致性hash算法(consistent hashing)的使用详解
本篇文章对一致性hash算法(consistent hashing)的使用进行了详细的分析介绍。需要的朋友参考下2013-05-05干掉一堆mysql数据库,仅需这样一个shell脚本(推荐)
这篇文章主要介绍了干掉一堆mysql数据库,仅需这样一个shell脚本,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2019-04-04Mysql清空表数据库命令truncate和delete详解
这篇文章主要介绍了Mysql数据库清空表truncate和delete的相关知识,本文给大家讲解的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2023-06-06
最新评论