如何添加一个mysql用户并给予权限详解

 更新时间:2023年03月01日 08:58:04   作者:xiao__xf  
在很多时候我们并不会直接利用mysql的root用户进行项目的开发,一般我们都会创建一个具有部分权限的用户,下面这篇文章主要给大家介绍了关于如何添加一个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用户并给权限内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql mycat 中间件安装与使用

    mysql mycat 中间件安装与使用

    MyCAT是MySQL中间件,前身是阿里大名鼎鼎的Cobar,Cobar在开源了一段时间后,不了了之。于是MyCAT扛起了这面大旗,在大数据时代,其重要性愈发彰显。这篇文章主要是MyCAT的入门部署。
    2017-05-05
  • MySQL中NOT IN填坑之列为null的问题解决

    MySQL中NOT IN填坑之列为null的问题解决

    这篇文章主要给大家介绍了关于MySQL中NOT IN填坑之列为null的问题解决的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-11-11
  • MySQL数据库连接查询 join原理

    MySQL数据库连接查询 join原理

    这篇文章主要介绍了MySQL数据库连接查询 join原理,文章首先通过将多张表连到一起查询 导致记录行数和字段列发生变化,利用一对一、一对多和多对多关系保证数据完整性展开主题内容,需要的小伙伴可以参考一下
    2022-06-06
  • 保存图片到MySQL以及从MySQL读取图片全过程

    保存图片到MySQL以及从MySQL读取图片全过程

    有人喜欢使用mysql来存储图片,而有的人喜欢把图片存储在文件系统中,而当我们要处理成千上万的图片时,会引起技术问题,下面这篇文章主要给大家介绍了关于如何保存图片到MySQL以及从MySQL读取图片的相关资料,需要的朋友可以参考下
    2023-05-05
  • phplib中的一些基本语法和函数

    phplib中的一些基本语法和函数

    phplib中常用的方法有set_file,set_block,set_var,parse,ppasre,p,get等。
    2010-04-04
  • 分析MySQL中索引引引发的CPU负载飙升的问题

    分析MySQL中索引引引发的CPU负载飙升的问题

    这篇文章主要介绍了分析MySQL中索引引引发的CPU负载飙升的问题,文中提到了独立索引所带来的巨大CPU负担,以提醒在MySQL中使用索引要注意CPU负载的问题,需要的朋友可以参考下
    2015-05-05
  • mysql DISTINCT选取多个字段,获取distinct后的行信息方式

    mysql DISTINCT选取多个字段,获取distinct后的行信息方式

    这篇文章主要介绍了mysql DISTINCT选取多个字段,获取distinct后的行信息方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • mysql的单列多值存储实例详解

    mysql的单列多值存储实例详解

    数据库市场需要细分,行式数据库不再满足所有的需求,而有很多需求需要,下面这篇文章主要给大家介绍了关于mysql单列多值存储的相关资料,文中通过示例代码介绍介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • MySQL数据库高级查询和多表查询

    MySQL数据库高级查询和多表查询

    这篇文章主要介绍了MySQL数据库高级查询和多表查询,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • Mysql中zerofill自动填充的实现

    Mysql中zerofill自动填充的实现

    MySQL中的zero fill可以设置自动填充零,以便固定位数的数字能够保持一致的格式,本文就介绍了Mysql中zerofill自动填充,感兴趣的可以了解一下
    2023-09-09

最新评论