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'@'%';

相关推荐
葛小白115 小时前
C#数据类型:string简单使用
服务器·数据库·c#
污斑兔15 小时前
MongoDB的$sample是啥?
数据库·mongodb
马丁的代码日记16 小时前
MySQL InnoDB 行锁与死锁排查实战演示
数据库·mysql
拍客圈17 小时前
数据主站+副站做的设置
数据库
计算机学长felix18 小时前
基于SpringBoot的“面向校园的助力跑腿系统”的设计与实现(源码+数据库+文档+PPT)
数据库·spring boot·后端
金仓拾光集18 小时前
__工艺数据管理的范式转变:金仓数据库替代MongoDB实操实践__
数据库·mongodb
xiaogg367819 小时前
redis-cluster集群配置部署
数据库·redis·缓存
运维小文19 小时前
MySQL高可用方案MIC&mysqlCluster+mysqlRouter
数据库·mysql·mic·mysql高可用·mysqlcluster·mysqlrouter
不剪发的Tony老师19 小时前
Redis Commander:一款基于Web、免费开源的Redis管理工具
数据库·redis
IT教程资源C19 小时前
(N_157)基于springboot,vue服装商城系统
mysql·vue3·前后端分离·springboot服装商城