如何添加一个mysql用户并给予权限详解
作者:xiao__xf 发布时间:2024-01-17 06:09:36
一、新建一个用户
老板:给我新建一个用户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 | 允许授予权限 |
来源:https://blog.csdn.net/xiao__nizi/article/details/127551165


猜你喜欢
- 记得从ymPrompt2.0的时候自己就遇到过在IE下有时会莫名其妙的提示“无法打开Internet站点 已终止操作”,这样的一个错误很让人
- 在 MySQL 中,EXPLAIN 命令是一种非常重要的查询优化工具,它可以帮助我们分析 SQL 查询语句的执行计划,以及如何优化它们。在使
- 这一次将使用pymysql来进行一次对MySQL的增删改查的全部操作,相当于对前五次的总结:先查阅数据库:现在编写源码进行增删改查操作,源码
- (1)标准类型操作符(所有的集合类型)成员关系 (in, not in) &nbs
- 目录概述模板模式生活案例策略模式涉及到两个角色UML总结示例概述模板方法模式定义了一个算法的步骤,并允许子类别为一个或多个步骤提供其实践方式
- 问题描述如下:解决方案如下:下图中字体调整为18及以上效果如下:来源:https://blog.csdn.net/appleyuchi/ar
- 前言今天无意中发现在python中的一个多重赋值的小问题,自己一开始是比较简单化的理解了这个多重赋值操作的概念,所以导致在一道实现斐波那契数
- 本文实例为大家分享了python实现邮箱发送信息的具体代码,供大家参考,具体内容如下一、SSLSSL 是指安全套接字层,简而言之,它是一项标
- 目录1、requests项目单元测试状况2、简单工具类如何测试2.1 test_help 实现分析2.2 test_hooks 实现分析2.
- 项目涉及的数据库表并不多,但每个select、insert、update和delete都去手动拼接字符串,是很低效的,尤其在时常要修改结构的
- 一:背景引入对于一张图片,怎样修改局部像素值?二:利用Tensor方法比如输入全零tensor,可认为为黑色图片>>> n
- JDBC数据库连接MySQL中建表在终端使用命令mysql -u root -p打开数据库,在数据库操作环境下进行创建数据库,建表等等操作建
- 作为一个从 PHP 转 Java 的人,发现 alibaba 的 arthas 很好用。通过 arthas 的 redefine 命令,可以
- SQL Server中事务日志的作用:持续记录数据库所有的事务和这些事务对数据库所做的修改;一旦数据库出现灾难事件,就需要事务日志来进行近期
- pandas.DataFrame为每一列保存一个数据类型dtype。要仅提取(选择)特定数据类型为dtype的列,请使用pandas.Dat
- 写在最前最近在使用vue的时候,遇到一个需求,实现左右div可通过中间部分拖拽调整宽度,类似于这样这是我最终的实现效果还是老话,因为我不是专
- 写在前面我的 CUDA 版本是什么? 这个问题本身就是有问题的,因为没有搞清楚cuda的分类这里的 CUDA 说的是 Driver CUDA
- 本文实例为大家分享了python使用正则筛选信用卡的具体代码,供大家参考,具体内容如下本文来源于两个简单的题目:1.判断一对单词是否是&qu
- 本文实例讲述了python实现web方式logview的方法。分享给大家供大家参考。具体如下:这里用Python实现web方式查看日志的一个
- 这篇文章主要是用PHP函数实现数字与文字分页,具体实现步骤就不罗嗦了,直接上代码/** * * @param $_sql * @param