Mysql用户创建以及权限赋予操作的实现

 更新时间:2023年10月10日 15:33:41   作者:有风入弦  
在MySQL中,创建新用户并为其授予权限是一项常见的操作,本文主要介绍了Mysql用户创建以及权限赋予操作的实现,具有一定的参考价值,感兴趣的可以了解一下

mysql创建用户, 并配置一个库的所有权限

在MySQL中,创建用户并为其授予某个库的所有权限,可以按照以下步骤操作: 

1.登录MySQL服务器。

mysql -u root -p

2.创建新用户。

CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'user_password';

其中,new_user是新用户的名称,localhost是该用户的登录主机,user_password是该用户的密码。

其中: MySQL中的"localhost"和"%"都是用来指定MySQL允许访问服务器的主机名。但是,它们之间存在一些重要的区别:

  • “localhost"只允许本地连接,而”%"允许所有IP地址都可以连接到服务器。
  • 在安全性方面,“localhost"比”%“更安全,因为它只允许本地用户连接到MySQL服务器,而”%"可能会允许外部用户连接,从而增加了安全风险。
  • “localhost"是默认的主机名,所以通常不需要指定,而”%"需要明确指定才能允许所有主机的连接。

综上所述,“localhost"和”%“都有各自的优点和缺点,具体使用应根据具体情况和需要进行选择。如果只允许本地访问,建议使用"localhost”,如果需要允许来自所有主机的访问,则应该使用"%"。

3.授予该用户在数据库中的所有权限。

GRANT ALL PRIVILEGES ON database_name.* TO 'new_user'@'localhost';
FLUSH PRIVILEGES;

在这个语句中,ALL PRIVILEGES授权了该用户在指定数据库中进行所有操作的权限。database_name.*授权该用户对指定数据库的所有表和视图都具有完全的权限。FLUSH PRIVILEGES命令用于刷新权限,以确保MySQL的权限系统已更新。

现在,新用户已被创建并被授权对指定数据库的所有表进行所有操作。当然,如果需要的话,可以调整授予的具体权限范围。

3.1 权限的分类以及怎么给用户赋予不同权限

MySQL有许多种权限,包括全局权限、数据库级别权限、表级别权限、列级别权限等。在MySQL中,可以通过授权命令(grant)来给用户不同的权限。

授权命令的语法如下:

GRANT privileges ON object TO 'user'@'localhost' [IDENTIFIED BY [PASSWORD] 'password']

其中,privileges表示授权给用户的权限,object表示将权限授予的对象(比如database_name.*),user表示被授权的用户,IDENTIFIED BY 'password’表示设置用户密码(这一步可以省略)。

MySQL中常见的权限包括:

  • ALL PRIVILEGES:拥有所有权限
  • ALTER:修改已经存在的表结构,但不能修改表名称和删除表
  • CREATE:创建新的数据库和表
  • DELETE:删除表中的数据
  • DROP:删除已经存在的数据库和表
  • INSERT:插入新数据到表中
  • SELECT:从表中选取数据
  • UPDATE:更新表中的数据

例如,通过以下命令给用户’username’授予访问’database_name’库中所有表的SELECT和INSERT权限:

GRANT SELECT, INSERT ON database_name.* TO 'username'@'localhost';

4.显示mysql所有用户以及权限

在MySQL中,可以使用以下查询语句来查看所有用户及其权限:

SELECT user, host, authentication_string FROM mysql.user;

结果如下

该查询语句返回三个列:user表示用户名,host表示用户所在的主机,authentication_string表示该用户的加密密码或者密码哈希值。

为了查看每个用户的具体权限,可以使用以下语句:

SHOW GRANTS FOR 'user_name'@'host_name';

该语句将显示指定用户在特定主机上授予的权限。注意,密码哈希值在授权语句中是不可见的。

执行之后会出现:

+-----------------------------------------------------------------------------------------------+
| Grants for user_name@host_name                                                                |
+-----------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'user_name'@'host_name' IDENTIFIED BY PASSWORD 'password_hash'             |
| GRANT SELECT, INSERT, UPDATE ON `testdb`.* TO 'user_name'@'host_name'                           |
| GRANT CREATE ON `sampledb`.* TO 'user_name'@'host_name'                                         |
+-----------------------------------------------------------------------------------------------+

例如,上述结果表明user_name在host_name上拥有以下权限:

  • 对所有的数据库和所有的表都拥有 USAGE 权限
  • 对 testdb 库下的所有表具有 SELECT、INSERT 和 UPDATE 权限
  • 对 sampledb 库下的所有表具有 CREATE 权限

如果想查看所有用户的权限,可以使用以下语句:

SELECT DISTINCT CONCAT('SHOW GRANTS FOR \'', user, '\'@\'', host, '\';') AS query FROM mysql.user;

该语句将为每个用户构建SHOW GRANTS语句,并将其作为查询结果返回。可以将查询结果拷贝到命令行中执行,以查看每个用户的具体权限。

到此这篇关于Mysql用户创建以及权限赋予操作的实现的文章就介绍到这了,更多相关Mysql用户创建及权限赋予内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 关于Mysql通用查询日志和慢查询日志分析

    关于Mysql通用查询日志和慢查询日志分析

    MySQL中的日志包括:错误日志、二进制日志、通用查询日志、慢查询日志等等。这里主要介绍下比较常用的两个功能:通用查询日志和慢查询日志,需要的朋友可以参考下
    2018-10-10
  • MySQL 存储引擎  MyISAM详解(最新推荐)

    MySQL 存储引擎  MyISAM详解(最新推荐)

    使用 MyISAM 存储引擎的表占用空间很小,但是由于使用表级锁定,所以限制了读/写操作的性能,通常用于中小型的Web应用和数据仓库配置中的只读或主要是读的场景,这篇文章主要介绍了MySQL 存储引擎  MyISAM详解,需要的朋友可以参考下
    2025-05-05
  • Mysql 数据库结构及索引类型

    Mysql 数据库结构及索引类型

    这篇文章主要介绍了Mysql 数据库结构及索引类型,数据库索引是 mysql 数据库中重要的组成部分,是数据库查询数据速度提升的关键,本文将介绍数据库索引的一些内容,下文更多相关内容,需要的小伙伴可以参考一下
    2022-05-05
  • Mysql中使用count加条件统计的实现示例

    Mysql中使用count加条件统计的实现示例

    本文主要介绍了Mysql中使用count加条件统计的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Kettle的MySQL数据源版本问题及解决

    Kettle的MySQL数据源版本问题及解决

    这篇文章主要介绍了Kettle的MySQL数据源版本问题及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10
  • MySql中把一个表的数据插入到另一个表中的实现代码

    MySql中把一个表的数据插入到另一个表中的实现代码

    本篇文章是对MySql中把一个表的数据插入到另一个表中的实现代码进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • MySQL 复合查询核心指南之多表、子查询与实战技巧

    MySQL 复合查询核心指南之多表、子查询与实战技巧

    本文全面拆解 MySQL 复合查询的核心玩法,包括多表查询、自连接、子查询、合并查询,所有 SQL 均采用小写形式,贴合开发规范,附带实战案例和避坑要点,感兴趣的朋友跟随小编一起看看吧
    2026-03-03
  • 发现mysql一个用法,比较有用

    发现mysql一个用法,比较有用

    mysql下用select实现列运算
    2008-02-02
  • MySQL优化之Index Merge的使用

    MySQL优化之Index Merge的使用

    本文主要介绍了MySQL优化之Index Merge的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • MySQL 中的 CAST 函数详解及常见用法

    MySQL 中的 CAST 函数详解及常见用法

    CAST 函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL 中的 CAST 函数,感兴趣的朋友一起看看吧
    2025-07-07

最新评论