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更新当前登录用户的口令。
上一篇: 使用vagrant配置开发环境