用户权限管理操作 DCL语句
一.用户管理操作
MySQL软件内部完整的用户格式:
用户名@客户端地址
admin@1.1.1.1这个用户只能从1.1.1.1的客服端来连接服务器
admin@1.1.1.2这个用户只能从1.1.1.2的客服端来连接服务器
root@local host这个用户只能从服务器本地进行连接。
客服端地址的不同类型:
1.IP地址admin@192.168.1.1
2.本地登录admin@local host这个用户只能从服务器本地进行登录。
3.主机名admin@nodel01.linux.com这个用户只能从nodel01这台机器用admin用户来登录数据库
4.网段 admin@192.168.1.%这表示这个admin用户允许IP地址在192.168.1.%这个范围内的所有机器使用来登录数据库。
5.所有主机admin@%不包括本地的local host。
对于MySQL服务器来说真正连接MySQL服务器的才能叫做客户端。
二。如何去创建一个用户?
可以用户help 加create,来查看数据库内部所有关于create操作的语句。
可以使用help 命令来查看命令的详细用法。
语法:create user “用户名”@“客户端地址” identified by “密码”
示例1:创建允许本地登录的用户,名称为admin。
create user “admin”@“local host” identified by “WWW.1.com”;
如上图所示,flush privileges;的作用是刷新权限表,
它仅仅是从磁盘上的权限表中重新读取信息到MySQL服务器的内存中,确保服务器使用的是最新权限配置。
当在MySQL数据库中对用户账号、角色或权限进行了修改(例如,创建新用户、修改用户权限或删除用户等操作),这些更改会保存到MySQL的系统权限表中。然而,在某些情况下,MySQL服务器可能不会立即意识到这些权限表的变化,尤其是在直接编辑了权限表的情况下。
可以使用select user,host from mysql.user;
在MySQL数据库中可以使用select user();
来查看当前数据库中是那个用户在登录MySQL软件。
如上图所示,当你使用创建的新用户admin来从本地机器登录MySQL数据库时,你只能看见一个数据库,information_schema数据库是用来储存当前MySQL数据库中的元数据信息的。
information_schema数据库在MySQL软件内部对所有普通用户而言是个只读数据库。
示例2:别的机器可以连接MySQL数据库,则MySQL数据库中要有允许别的机器远程连接的用户存在。
如果只是想开放MySQL端口而非完全关闭防火墙,可以添加规则来允许3306端口的流量:
Bash
1sudo firewall-cmd --permanent --add-port=3306/tcp
2sudo firewall-cmd --reload
可以将上述代码输入装有MySQL数据库的操作系统的命令行界面上使得MySQL数据库软件能够接收来自3306端口的流量。
首先使用create user ‘用户名’ @ ‘IP地址’ identified by ‘密码’;
随后使用flush priviledes;去刷新权限表,
mysql -u admin -p -h 192.168.215.129
使用这条命令随后在确认密码就可以了。
同样就只能看见一个记录元数据的数据库,
示例3:创建允许Windows连接的远程用户
自己电脑Windows下的VMnet8的IPv4 地址作为新建用户的客户端。
在Windows操作上我们可以使用可视化工具来连接MySQL数据库软件。
三.删除用户
drop user 用户名@客户端
四.修改用户密码
方法.1:mysqladmin 用于修改本地登录用户的密码。
就是mysqladmin -u martin -p password “新密码”;
随后输入旧密码,确认。
history
方法2:set password for '用户名@客服端' = password(‘新密码’);
set password for
可以使用help set password来查这条SQL语句的使用格式。
这个set password for 用户名 = password (‘新密码’);
flush privileges;更新授权表。
方法3.直接使用update mysql.set authentication_string=password("新密码") where user=‘用户名’ and host=“客户端”;
select user,host,authentication_string from mysql.user;
五。重置MySQL数据库管理员密码
1.编辑my.cnf配置文件
【mysqld】
skip-grant-tables //跳过授权表
#systemctl restart mysqld
2.使用root用户登录数据库,使用update修改密码
3.将配置文件中跳过授权表的配置删除,重启数据库服务。
在MySQL软件中用户的信息存在哪张表上
mysql数据库软件,在mysql数据库中有一个user表,所有用户的信息都存在这张表上。
想查看一个数据库中所有的表可以使用命令show tables;
字段结构:user ,host,authentication_string
剩余的其他字段使用来标记用户的权限的。
可以使用user字段来储存用户名,可以用host字段来储存客户端命令,可以用authentication_string来储存用户的密码。
单纯只是查看用户名和客户端的话,可以使用命令select user, host from mysql.user
来调出mysql数据库中user表的user字段和host字段的信息。
如上图所示,也可以使用命令select user,host,authentication_string from mysql.user
来查看数据库mysql中表user中用户名信息,客户端信息,以及用户的密码信息。