欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql| 账号权限管理

程序员文章站 2022-05-31 18:09:27
...

mysql数据库有一个名为user的表, 它包含所有用户账号user表有一个名为user的列,它存储用户登录名。
查询所有的用户和允许登录的IP:

mysql> use mysql;
Database changed
mysql> select host, user, password from user;
+-----------+-------+-------------------------------------------+
| host      | user  | password                                  |
+-----------+-------+-------------------------------------------+
| localhost | root  | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| 127.0.0.1 | root  | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| ::1       | root  | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| localhost |       |                                           |
| %         | yvshe | *BB7D32253D06B063826510B37E22FAEE4F132B6E |
+-----------+-------+-------------------------------------------+
5 rows in set

使用GRANT或INSERT GRANT语句也可以创建用户账号,但一般来说CREATE USER是最清楚和最简单的句子。此外, 也可以通过直接插入行到user表来增加用户, 不过为安全起见,一般不建议这样做。 MySQL用来存储用户账号信息的表(以及表模式等)极为重要,对它们的任何毁坏都可能严重地伤害到MySQL服务器。因此,相对于直接处理来说,最好是用标记和函数来处理这些表。



新建用户

CREATE USER userName IDENTIFIED BY 'userNamePassword';

修改用户名

RENAME USER yveshe TO yveshe2;  -- (MySQL5开始支持)

删除用户

DROP USER yveshe;  -- (如果是MySQL5之前版本还需要先用REVOKE删除与账号相关的权限,然后再用DROP USER删除账号。)

权限设置

在创建用户账号后,必须接着分配访问权限。新创建的用户账号没有访问权限。它们能登录MySQL,但不能看到数据,不能执行任何数据库操作。

  • 查看某个用户权限
mysql> SHOW GRANTS FOR  yvshe;

+------------------------------------------------------------------------------------------------------+
| Grants for [email protected]%                                                                                   |
+------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'yvshe'@'%' IDENTIFIED BY PASSWORD '*BB7D32253D06B063826510B37E22FAEE4F132B6E' |
+------------------------------------------------------------------------------------------------------+
1 row in set

MySQL的权限用用户名主机名结合定义。如果不指定主机名,则使用默认的主机名%(授予用户访问权限而不管主机名)。

  • 给用户设置权限
    GRANT要求你至少给出以下信息:
    1.要授予的权限;
    2.被授予访问权限的数据库或表;
    3.用户名

比如:

GRANT SELECT,UPDATE ON db_yveshe.* TO yvshe;

给用户名为yveshe的用户在数据库为db_yveshe的所有表中添加SELECT和UPDATE的权限.

REVOKE SELECT,UPDATE ON db_yveshe.* FROM yvshe;

移除用户名为yveshe的用户在数据库为db_yveshe的所有表SELECT和UPDATE的权限.

GRANT和REVOKE可在几个层次上控制访问权限:

整个服务器,使用GRANT ALL和REVOKE ALL;
整个数据库,使用ON database.*;
特定的表,使用ON database.table;
特定的列;
特定的存储过程

修改密码

SET PASSWORD FOR yveshe = PASSWORD("yveshe ");  -- 密码必须传递到Password()函
数进行加密
SET PASSWORD = PASSWORD("yveshe ");   -- 在不指定用户名时, SET PASSWORD更新当前登录用户的口令。