1.查询用户
use mysql;
select * from user;
2.创建用户
create user '用户名'@'主机名' identified by '密码';
举例
create user 'gpt'@'%' identified by 'gpt';
此条语句表示 允许用户 gpt从任何主机访问数据库 密码为 gpt
2.1举例
这条 QL 语句的作用是创建一个新的 MySQL 用户。具体解释如下:
CREATE USER 'gpt'@'%'
:这部分指定要创建的用户是gpt
,并且该用户可以从任何主机(%
表示任意主机)连接到数据库。IDENTIFIED BY 'gpt'
:这部分设置新用户的密码为gpt
。
综上所述,这条语句的功能是创建一个名为 gpt
的新用户,密码为 gpt
,并允许该用户从任何主机连接到 MySQL 数据库。
2.2主机名详解
- ‘%’:使用百分号 (%) 作为通配符,表示允许从任何主机连接。例如,‘user’@‘%’ 表示用户 user 可以从任何网络地址连接到MySQL服务器。
- ‘localhost’:表示用户只能从运行MySQL服务器的同一台机器上连接。通常用于确保只有从该机器本地访问数据库的权限。例如,‘user’@‘localhost’ 表示用户 user 仅能从本地主机连接。
- 具体的IP地址:你可以指定一个具体的IP地址,允许用户仅从该IP地址连接。例如,‘user’@‘192.168.1.100’ 允许用户 user 仅从IP地址 192.168.1.100 连接。
- 子网掩码:使用子网掩码可以允许来自特定子网的连接。例如,‘user’@‘192.168.1.%’ 允许从IP地址以 192.168.1. 开头的任何地址连接。
- 域名:也可以使用完整的域名来限制连接。例如,‘user’@‘myhost.example.com’ 允许从域名为 myhost.example.com 的主机连接。
3.修改用户密码
alter user '用户名'@'主机名' identified with 加密方式 by '密码';
3.1举例
alter user 'root'@'%' identified with mysql_native_password by '123456';
这条 SQL 语句的作用是修改 MySQL 数据库中用户 root
的身份验证方式和密码。具体解释如下:
ALTER USER 'root'@'%'
:这部分指定要修改的用户是root
,并且该用户可以从任何主机(%
表示任意主机)连接到数据库。IDENTIFIED WITH mysql_native_password
:这部分指定用户的身份验证插件为mysql_native_password
,这是 MySQL 的一种传统身份验证方式。BY '123456'
:这部分设置用户的密码为123456
。
综上所述,这条语句的功能是将 root
用户的密码更改为 123456
,并确保使用 mysql_native_password
进行身份验证。
3.2加密方式列举
在 MySQL 8 中,主要的密码加密方式(身份验证插件)包括:
-
mysql_native_password:这是 MySQL 的传统身份验证插件,使用 SHA-1 哈希算法来存储密码。
-
caching_sha2_password:这是 MySQL 8 的默认身份验证插件,使用 SHA-256 哈希算法,并支持缓存机制以提高性能。它提供了更强的安全性。
-
sha256_password:这个插件使用 SHA-256 哈希算法,但不支持缓存。它通常用于需要更高安全性的场景。
-
auth_socket:这个插件允许通过 Unix 套接字进行身份验证,通常用于本地连接。它不需要密码,而是依赖于操作系统的用户身份。
-
mysql_clear_password:这个插件以明文形式传输密码,通常用于与外部身份验证系统集成时。
-
pam:这个插件允许使用可插拔认证模块(PAM)进行身份验证,适用于与系统用户管理集成。
-
ldap:这个插件允许通过 LDAP 进行身份验证,适用于企业环境中使用 LDAP 目录服务的情况。
4.删除用户
drop user '用户名'@'主机名';
4.1 举例
drop user 'gpt_user'@'%';
这条 SQL 语句的作用是删除一个已经存在的 MySQL 用户。具体解释如下:
DROP USER 'gpt_user'@'%'
:这部分指定要删除的用户是gpt_user
,并且该用户可以从任何主机(%
表示任意主机)连接到数据库。
综上所述,这条语句的功能是删除名为 gpt_user
的用户,且该用户的连接来源可以是任意主机。执行这条语句后,用户 gpt_user
将不再能够连接到 MySQL 数据库。请注意,删除用户的操作是不可逆的,因此在执行此命令之前应谨慎确认。
5. mysql拥有的权限
在 MySQL 中,权限(或称为特权)是用来控制用户对数据库操作的规则。根据使用频率,权限可以分为常用权限和不常用权限。以下是一些常用和不常用的权限分类:
5.1常用权限
- SELECT:允许用户从表中查询数据。
- INSERT:允许用户向表中插入新数据。
- UPDATE:允许用户更新表中的数据。
- DELETE:允许用户删除表中的数据。
- CREATE:允许用户创建新表、数据库或索引。
- DROP:允许用户删除表或数据库。
- ALTER:允许用户修改表的结构(如添加或删除列)。
- GRANT OPTION:允许用户将其拥有的权限授予其他用户。
- EXECUTE:允许用户执行存储过程或函数。
5.2不常用权限
- INDEX:允许用户创建和删除索引。
- CREATE TEMPORARY TABLES:允许用户创建临时表。
- LOCK TABLES:允许用户锁定表,以便进行并发操作。
- REFERENCES:允许用户创建外键引用(在某些情况下使用)。
- SHOW VIEW:允许用户查看视图的定义。
- TRIGGER:允许用户创建和删除触发器。
- CREATE ROUTINE:允许用户创建存储过程和函数。
- ALTER ROUTINE:允许用户修改或删除存储过程和函数。
- EVENT:允许用户创建、修改或删除事件调度器的事件。
- PROXY:允许用户以其他用户的身份连接。
5.3特殊权限
除了上述常用和不常用权限外,还有一些特殊权限,如:
- SUPER:允许用户执行管理操作,如杀死线程、修改系统变量等。
- FILE:允许用户读写服务器文件。
- RELOAD:允许用户重新加载权限或日志。
- SHUTDOWN:允许用户关闭 MySQL 服务器。
这些权限可以通过 GRANT
和 REVOKE
语句进行授予和撤销,以便根据具体需求管理用户的访问权限。
6. 查询用户权限
SHOW GRANTS FOR '用户名'@'主机名';
6.1 举例
SHOW GRANTS FOR 'root'@'%';
- 作用:这条语句用于显示 MySQL 数据库中名为
root
的用户(从任何主机连接,%
表示任意主机)所拥有的权限。 - 解释:执行这条命令后,MySQL 将返回与
root
用户相关联的所有权限信息,包括用户可以执行的操作以及这些权限适用的数据库和表。
7.授予权限
GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'
7.1 举例
GRANT ALL ON *.* TO 'root'@'%'
- 作用:这条语句用于授予名为
root
的用户(从任何主机连接)所有数据库及表的权限。 - 解释:
ALL
表示授予所有可用权限,包括 SELECT、INSERT、UPDATE、DELETE 等。ON *.*
表示这些权限适用于所有数据库和所有表(*
表示所有数据库,第二个*
表示所有表)。- 这条命令通常用于确保
root
用户具有完全的管理权限。
8.撤销权限
REVOKE 权限列表 ON 数据库名.表名 TO '用户名'@'主机名'
8.1举例
REVOKE ALL ON *.* FROM 'root'@'%'
- 作用:这条语句用于撤销名为
root
的用户(从任何主机连接)在所有数据库和所有表上的所有权限。 - 解释:
ALL
表示撤销所有权限。ON *.*
表示这些权限适用于所有数据库和所有表。- 这条命令会取消用户
root
在所有数据库和表上的所有操作权限,通常用于对权限进行限制或管理。