MySQL架构_用户与权限管理
迪丽瓦拉
2025-06-01 01:32:49
0

目录

  • 一、MySQL的用户管理
    • 1.创建用户
    • 2.了解user表
    • 3.设置密码
    • 4.删除用户
  • 二、权限管理
    • 1.授权命令
    • 2.收回权限
    • 3.查看权限
  • 三、通过工具远程访问
    • 1.先 ping 一下数据库服务器的ip地址确认网络畅通。
    • 2.关闭数据库服务的防火墙
    • 3.或者不关防火墙,而是,开发3306端口(生产环境下使用)
    • 4.确认MySQL中已经有可以通过远程登录的账户
    • 5.如果没有用户,先执行如下命令
    • 6.测试连接

一、MySQL的用户管理

1.创建用户

create user zhang3 identified by '123123';

表示创建名称为zhang3的用户,密码设为123123;

2.了解user表

select * from mysql.user; 以列的方式显示数据
select host,user,authentication_string,select_priv,insert_priv,drop_priv from mysql.user;  

select_priv(查询) insert_priv(插入) drop_priv(删除)
在这里插入图片描述
host : 表示连接类型

  • % 表示所有远程通过 TCP方式的连接
  • IP 地址 如 (192.168.1.2,127.0.0.1) 通过制定ip地址进行的TCP方式的连接
  • 机器名 通过制定网络中的机器名进行的TCP方式的连接
  • ::1 IPv6的本地ip地址,等同于IPv4的 127.0.0.1
  • localhost 本地方式通过命令行方式的连接 ,比如mysql -u xxx -p xxx 方式的连接。

user : 表示用户名

  • 同一用户通过不同方式链接的权限是不一样的。

password : 密码

  • 所有密码串通过 password(明文字符串) 生成的密文字符串。加密算法为MYSQLSHA1,不可逆 。
  • mysql 5.7 的密码保存到 authentication_string 字段中不再使用password 字段。

select_priv , insert_priv等

  • 为该用户所拥有的权限。

3.设置密码

修改当前用户的密码:

set password =password('123456') 

修改某个用户的密码:
必须使用root 用户

update mysql.user set authentication_string=password('111111') where user='zhang3'; 

所有通过user表的修改,必须用该命令才能生效。

flush privileges;

4.删除用户

drop user zhang3 ; 推荐使用!
在这里插入图片描述
不要通过delete from user where user=‘zhang3’ 进行删除,系统会有残留信息保留。

二、权限管理

1.授权命令

  • grant 权限1,权限2,…权限n on 数据库名称.表名称 to 用户名@用户地址 identified by ‘连接口令’;
  • 该权限如果发现没有该用户,则会直接新建一个用户。
  • 比如:
  1. 必须有li4 用户才行!
grant select,insert,delete,update on donglindb.* to li4@localhost identified by ‘123123’;

2.给li4用户用本地命令行方式下,授予donglindb这个库下的所有表的插删改查的权限。(常用)

grant all privileges on * . * to joe@'%'  identified by '123123';

3.授予通过网络方式登录的joe用户 ,对所有库所有表的全部权限,密码设为123123.
在这里插入图片描述

2.收回权限

  • 收回权限命令
    1.revoke 权限1,权限2,…权限n on 数据库名称.表名称 from 用户名@用户地址 ;
  1. 收回全库全表的所有权限
REVOKE ALL PRIVILEGES ON *.* FROM joe@'%'; 

3.收回mysql库下的所有表的插删改查权限

REVOKE select,insert,update,delete ON * . * FROM joe@'%';

须用户重新登录后才能生效

3.查看权限

查看当前用户权限

show grants;

查看某用户的全局权限

select  * from mysql.user ;

三、通过工具远程访问

grant all privileges on *.* to root@'%'  identified by 'root';

1.先 ping 一下数据库服务器的ip地址确认网络畅通。

ping 192.168.121.140

2.关闭数据库服务的防火墙

systemctl start firewalld.service
systemctl status firewalld.service
systemctl stop firewalld.service
systemctl enable firewalld.service
systemctl disable firewalld.service

3.或者不关防火墙,而是,开发3306端口(生产环境下使用)

查看开放的端口号

firewall-cmd --list-all

设置开放的端口号 生成环境!

firewall-cmd --add-service=http --permanent
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-port=3306/tcp --permanent

重启防火墙

firewall-cmd --reload 

4.确认MySQL中已经有可以通过远程登录的账户

select  * from mysql.user where user='root' and host='%'; 

5.如果没有用户,先执行如下命令

grant all privileges on *.*  to root@'%'  identified by 'root';

6.测试连接

在这里插入图片描述

相关内容