一些mysql创建用户,赋予权限的命令

本文介绍了MySQL中如何创建用户,设置主机名限制以及权限分配。通过`createuser`和`grant`语句,可以创建用户并赋予不同级别的权限,如全库权限、特定数据库权限或特定表的查询和插入权限。`flush privileges`用于使权限变更立即生效。同时,也展示了如何删除用户以及用户权限的相关术语和范围。

创建用户 主机名中 ip表示只允许某个ip访问 ,%表示所有,localhost表示只允许本地访问

注意某个用户的信息中 用户名和主机名组成了一个用户,同一个用户名不同的主机名组成的是不同的用户

create user '用户名'@'主机名' identified by 'password';

例
create user 'username'@'%' identified by 'password';

赋予权限


grant all privileges on *.* to 'username'@'%' ;  //所有数据库所有权限

grant select on *.* to 'username'@'%';  //所有数据库查询权限

grant select on test.* to 'username'@'%';  //test数据库查询权限

grant select on test.table1 to 'username'@'%';  //test数据库table1表的查询权限

grant select,insert on test.table1 to 'username'@'%';  //test数据库table1表的查询,插入权限

刷新权限
授权后必须flush privileges;否则无法立即生效。

flush privileges;

删除用户

drop user '用户名'@'主机名';

权限名称 对应user表中的列 权限范围
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 routine 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 超级权限

<think>我们正在处理用户关于MySQL创建用户赋予权限的问题。根据用户需求,我们需要提供SQL命令。根据引用[1],我们知道创建用户并授予权限是常见的操作,无论底层操作系统是什么。引用[2]提到,在MySQL8.0中推荐使用CREATEUSER语句,并使用IDENTIFIEDWITHmysql_native_passwordBY'password'来指定密码和认证方式。引用[3]提供了一些具体的GRANT命令示例,用于赋予权限。因此,我们可以将步骤分为两部分:1.创建用户2.授予权限注意:在MySQL8.0及以上版本中,创建用户和授权通常需要分开执行,因为GRANT语句不再具有自动创建用户的能力(除非使用GRANT时创建用户,但官方推荐先创建用户再授权)。具体步骤:步骤1:创建用户使用CREATEUSER语句创建用户,并设置密码和认证方式。例如:CREATEUSER'newuser'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'password';这里:-'newuser'是用户名-'localhost'表示用户只能从本地连接,如果要允许从任意主机连接,可以使用'%'-'password'是用户密码步骤2:授予权限使用GRANT语句授予权限权限可以是ALLPRIVILEGES(所有权限),也可以是具体的权限(如SELECT,INSERT,UPDATE等),并指定数据库和表。例如,授予用户对某个数据库的所有权限:GRANTALLPRIVILEGESONdatabase_name.*TO'newuser'@'localhost';然后,需要刷新权限以使更改生效:FLUSHPRIVILEGES;另外,引用[3]中给出了多个示例,我们可以参考。我们还可以考虑更复杂的权限设置,比如只授予特定表的特定权限。注意:在实际操作中,为了安全,通常遵循最小权限原则,只授予必要的权限。下面是一个完整的示例:--创建用户CREATEUSER'myuser'@'%'IDENTIFIEDWITHmysql_native_passwordBY'mypassword';--授予用户对所有数据库的所有权限(不推荐,仅示例)GRANTALLPRIVILEGESON*.*TO'myuser'@'%';--刷新权限FLUSHPRIVILEGES;但是,更安全的做法是只授予特定数据库权限,例如:GRANTALLPRIVILEGESONmydb.*TO'myuser'@'%';如果只需要查询权限,可以这样:GRANTSELECTONmydb.*TO'myuser'@'%';或者更细粒度到表:GRANTSELECT,INSERTONmydb.mytableTO'myuser'@'%';最后,记得刷新权限。另外,如果需要修改用户权限,可以使用REVOKE撤销权限,然后重新授权。注意:在MySQL8.0中,认证插件默认是caching_sha2_password,但有些客户端可能还不支持,所以使用mysql_native_password可以兼容旧客户端。不过,从安全性考虑,推荐使用caching_sha2_password,除非有兼容性问题。因此,在创建用户时,也可以不指定认证方式(默认使用caching_sha2_password):CREATEUSER'newuser'@'localhost'IDENTIFIEDBY'password';但用户需要确保客户端支持。总结:1.创建用户:CREATEUSER2.授予权限:GRANT3.刷新权限:FLUSHPRIVILEGES根据用户需求,我们提供SQL命令的示例。另外,用户可能还需要知道如何查看用户权限,可以使用:SHOWGRANTSFOR'myuser'@'%';这样,用户就可以验证权限是否设置正确。</think>### 在 MySQL创建用户赋予权限SQL 命令 #### 1️⃣ **创建用户** 使用 `CREATE USER` 语句创建用户,并设置密码: ```sql -- 基础语法 CREATE USER '用户名'@'主机地址' IDENTIFIED BY '密码'; -- 示例:创建可从任意主机访问的用户 CREATE USER 'dev_user'@'%' IDENTIFIED BY 'Str0ngP@ss!'; -- 示例:创建本地访问的用户 CREATE USER 'admin'@'localhost' IDENTIFIED BY 'Loc@lPwd123'; ``` > 📌 **说明**: > - `主机地址`:`%` 表示允许任意远程连接,`localhost` 表示仅本地连接 > - MySQL 8.0+ 推荐显式指定认证插件(如 `IDENTIFIED WITH mysql_native_password BY '密码'`)[^2] --- #### 2️⃣ **授予权限** 使用 `GRANT` 语句赋予权限,支持精细化控制: ```sql -- 授予某数据库的所有权限 GRANT ALL PRIVILEGES ON 数据库名.* TO '用户名'@'主机地址'; -- 授予全局只读权限 GRANT SELECT ON *.* TO 'report_user'@'%'; -- 授予特定表的读写权限 GRANT SELECT, INSERT, UPDATE ON 数据库名.表名 TO '用户名'@'主机地址'; -- 示例:授予 test_db 所有权限 GRANT ALL PRIVILEGES ON test_db.* TO 'dev_user'@'%'; -- 示例:授予 orders 表的插入/查询权限 GRANT SELECT, INSERT ON shop.orders TO 'cashier'@'localhost'; ``` > ⚠️ **关键操作**:权限变更后需刷新权限 > ```sql > FLUSH PRIVILEGES; > ``` --- #### 3️⃣ **权限层级对照表** | 权限范围 | SQL 示例 | 适用场景 | |------------------|-----------------------------------|-----------------------| | **全局权限** | `GRANT SELECT ON *.* TO ...` | 跨数据库只读 | | **单数据库权限** | `GRANT ALL ON shop.* TO ...` | 特定数据库完全控制 | | **单表权限** | `GRANT INSERT ON shop.orders TO...`| 精细化表级控制 | | **存储过程权限** | `GRANT EXECUTE ON PROCEDURE ...` | 存储过程执行权限 | --- #### 4️⃣ **权限验证与撤销** - **查看用户权限**: ```sql SHOW GRANTS FOR '用户名'@'主机地址'; ``` - **撤销权限**: ```sql REVOKE INSERT ON shop.orders FROM 'cashier'@'localhost'; ``` - **删除用户**: ```sql DROP USER '用户名'@'主机地址'; ``` > 💡 **安全建议**: > 1. 遵循最小权限原则,避免使用 `GRANT ALL ON *.*` > 2. 生产环境优先制主机地址(如 `192.168.1.%`) > 3. 定期使用 `SHOW GRANTS` 审计权限[^3] --- #### 5️⃣ **操作流程示例** ```sql -- 步骤1:创建仅允许本地访问的分析员用户 CREATE USER 'analyst'@'localhost' IDENTIFIED BY 'An@lyt!c2023'; -- 步骤2:授予 sales 数据库只读权限 GRANT SELECT ON sales.* TO 'analyst'@'localhost'; -- 步骤3:刷新权限 FLUSH PRIVILEGES; -- 步骤4:验证权限 SHOW GRANTS FOR 'analyst'@'localhost'; ``` > 输出结果示例: > ``` > GRANT USAGE ON *.* TO `analyst`@`localhost` > GRANT SELECT ON `sales`.* TO `analyst`@`localhost` > ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值