MySQL的用户管理
1.MySQL 的权限语法
如果只使用 root
用户,就存在安全隐患,这点在 Linux
系统本身就体现出来了,MySQL
也有类似的问题,因此也有自己的账户管理。
我们前面铺垫过一个事情,MySQL
本质是在管理一些表的相关文件,文件在 Linux
中怎么区分用户?那不就是调用 Linux
本身的文件权限等接口么?
# MySQL 的用户表
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> show tables;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
31 rows in set (0.00 sec)
mysql> select * from user\G
*************************** 1. row ***************************
Host: localhost # 只允许本地连接的意思
User: root
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
Create_tablespace_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
plugin: mysql_native_password
authentication_string: ...... # 用户对应的密码
password_expired: Y
password_last_changed: 2023-10-01 17:12:19
password_lifetime: NULL
account_locked: N
# ...
MySQL
的用户本身也是以一个表的形式来管理的,而创建用户实际上就是插入用户的名字、权限、密码插入到 user
中(最简单粗暴的做法也是这样的,但是一般没必要)。
之后要提到的相关命令,往深处也是对 user
表做增删查改。
# MySQL 用户语法
# (1)重新加载授权表
FLUSH PRIVILEGES;
# (2)创建用户
CREATE USER 'user_name'@'登录主机/ip' IDENTIFIED BY 'password'; # 如果是 Windows 是不行的,Windows 的是私有 IP,设置为具体 IP 是没有意义的,因此有些时候会使用 %,但是一般也不使用 %
# (3)删除用户
DROP USER 'user_name'@'登录主机/ip';
# (4)修改用户的密码
ALTER USER 'username'@'host' IDENTIFIED BY 'new_password';
UPDATE USER SET authentication_string=password('new_password') where user='user_name';
SET password=password('new_password'); # 只设置当前用户密码
SET PASSWORD for 'user_name'@'主机名'=password('new_password');
# (5)查看当前用户
SELECT USER();
补充:
MySQL
对密码的管理是会进行明文加密的。
2.MySQL 的权限列表
权限 | 列名 | 作用 |
---|---|---|
CREATE | Create_priv | 数据库、表或索引 |
DROP | Drop_priv | 数据库或表 |
GRANT OPTION | Grant_priv | 数据库、表或索引权限的授权 |
REFERENCES | References_priv | 数据库或表 |
ALTER | Alter_priv | 表 |
DELETE | Delete_priv | 表 |
INDEX | Index_priv | 表 |
INSERT | Insert_priv | 表 |
SELECT | Select_priv | 表 |
UPDATE | Update_priv | 表 |
CREATE VIEW | Create_view_priv | 视图 |
SHOW VIEW | Show_view_priv | 视图 |
ALTER ROUTINE | Alter_routine_priv | 存储的程序 |
CREATE ROUTINE | Create_routine_priv | 存储的程序 |
EXECUTE | Execute_priv | 存储的程序 |
FILE | File_priv | 服务器主机上的文件访问 |
CREATE TEMPORARY TABLES | Create_tmp_table_priv | 临时表 |
LOCK TABLES | Lock_tables_priv | 表的锁定 |
CREATE USER | Create_user_priv | 用户帐号 |
PROCESS | Process_priv | 进程信息 |
RELOAD | Reload_priv | 服务器的重载 |
REPLICATION CLIENT | Repl_client_priv | 复制客户端 |
REPLICATION SLAVE | Repl_slave_priv | 复制从库 |
SHOW DATABASES | Show_db_priv | 数据库列表 |
SHUTDOWN | Shutdown_priv | 服务器的关闭 |
SUPER | Super_priv | 超级权限 |
刚刚创建的用户没有任何权限,需要 root
使用 GRANT 权限列表 ON 库.对象名 TO '用户名'@'登陆位置' [IDENTIFIED BY '密码']
来赋予。
-
GRANT
:权限列表,用多个权限用逗号分开# 权限列表 grant select on ... grant select, delete, create on .... grant all [privileges] on ... # 表示赋予该用户在该对象上的所有权限
-
*.* :代表本系统中的所有数据库的所有对象(表,视图,存储过程等)
-
库.*:表示某个数据库中的所有数据对象(表,视图,存储过程等)
-
IDENTIFIED BY
:可选,如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就会创建用户并且设置对应的密码
而可以使用 REVOKE 权限列表 ON 库.对象名 FROM 'user_name'@'登陆位置';
回收权限。
原文地址:https://blog.csdn.net/m0_73168361/article/details/136534993
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!