MySQL用户管理

1.用户信息

MySQL中的用户,都存储在数据库的user表中。

sql 复制代码
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
|//......            |
| mysql              |
+--------------------+
10 rows in set (0.00 sec)
 
mysql> show tables;
+------------------------------------------------------+
| Tables_in_mysql                                      |
+------------------------------------------------------+
|//......                                              |
| user                                                 |
+------------------------------------------------------+
38 rows in set (0.00 sec)

查看user表内容

mysql> select * from user\G;

//自行进行查看

sql 复制代码
mysql> select USER, HOST, authentication_string from user;
+------------------+-----------+------------------------------------------------------------------------+
| USER             | HOST      | authentication_string                                                  |
+------------------+-----------+------------------------------------------------------------------------+
| mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.sys        | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| root             | localhost | *E092E64E0BD5C6924B0E56A4F4D155051CF2FD                                |
+------------------+-----------+------------------------------------------------------------------------+
4 rows in set (0.00 sec)

host字段:表示用户可以从哪一个主机登录,localhost表示只能本机登录

user:用户名

authentication_string:用户通过password函数加密后的值

_priv:用户拥有的权限

MySQL允许创建多个用户,这些用户都为普通用户,root可以创建账号,创建账号需要设置用户名,从那里登录,密码。然后就会把这些信息作为数据插入到user表中。

创建用户

create user '用户名'@'登陆主机/ip' identified by '密码';

创建本地用户

-- 创建只允许本地登录的用户

CREATE USER 'localuser'@'localhost' IDENTIFIED BY 'password';

-- 创建允许本地socket和TCP/IP连接的用户

CREATE USER 'localuser'@'127.0.0.1' IDENTIFIED BY 'password';

本地是mysql机器内连接

权限刷新

mysql> flush privileges;

Query OK, 0 rows affected (0.00 sec)

登录创建的账号

u后面是用户名,p就是要密码

这个账号不能远程登录,host的值是localhost,只能本地登录,在MySQL上登录,不能跨网络登录。

删除用户

第一种

不安全,可能留下权限残留

delete from user where USER='zymm'

第二种

自动清理相关权限

-- 删除所有主机上的 lfz 用户

DROP USER IF EXISTS 'zymm'@'localhost', 'zymm'@'%';

创建远程登录的账号

使用 % 符号代表可以从任意主机进行登入

sql 复制代码
mysql> create user 'zymm'@'%' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
 
mysql> select USER, HOST, authentication_string from user;
+------------------+-----------+------------------------------------------------------------------------+
| USER             | HOST      | authentication_string                                                  |
+------------------+-----------+------------------------------------------------------------------------+
| zymm              | %         | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9                              |
| mysql.infoschema | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session    | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.sys        | localhost | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| root             | localhost | *E092E64E0BD5C6924B0E56A4F4D155051DFCF2FD                              |
+------------------+-----------+------------------------------------------------------------------------+
5 rows in set (0.01 sec)
 
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

window系统装了mysql就可以在命令提示符里打开mysql。

修改用户密码

用户自己修改密码

set password = password('新的密码');

root修改密码

set password for '用户名'@'主机名' = password('新的密码');

数据库权限

权限 上下文
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 服务器管理

授权操作

grant 权限列表 on 库.对象名 to '用户名'@'登陆位置' [identified by '密码'];

示例

-- 授予所有数据库的所有权限(类似root)

GRANT ALL PRIVILEGES ON *.* TO 'superuser'@'localhost' IDENTIFIED BY 'password';

-- 授予所有权限并允许远程连接

GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY 'Admin@123';

回收权限

revoke 权限列表 on 库.对象名 from '用户名'@'登陆位置';

示例

all和all privileges是一个意思,后者规范

-- 回收某个用户的所有数据库权限

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'olduser'@'localhost';

-- 回收特定数据库的所有权限

REVOKE ALL PRIVILEGES ON `mydb`.* FROM 'dbuser'@'%';

相关推荐
fen_fen21 小时前
Oracle建表语句示例
数据库·oracle
砚边数影1 天前
数据可视化入门:Matplotlib 基础语法与折线图绘制
数据库·信息可视化·matplotlib·数据可视化·kingbase·数据库平替用金仓·金仓数据库
orange_tt1 天前
Djiango配置Celery
数据库·sqlite
云小逸1 天前
【nmap源码学习】 Nmap网络扫描工具深度解析:从基础参数到核心扫描逻辑
网络·数据库·学习
·云扬·1 天前
MySQL Binlog落盘机制深度解析:性能与安全性的平衡艺术
android·mysql·adb
肉包_5111 天前
两个数据库互锁,用全局变量互锁会偶发软件卡死
开发语言·数据库·c++
霖霖总总1 天前
[小技巧64]深入解析 MySQL InnoDB 的 Checkpoint 机制:原理、类型与调优
数据库·mysql
此刻你1 天前
常用的 SQL 语句
数据库·sql·oracle
それども1 天前
分库分表的事务问题 - 怎么实现事务
java·数据库·mysql
·云扬·1 天前
MySQL Binlog 配置指南与核心作用解析
数据库·mysql·adb