mysql用户创建和授权

 转自:http://hi.baidu.com/fwso/blog/item/658c00555bdd1cc5b645aee0.html


一, 创建用户:

       命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';

       说明:username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

      例子: CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
               CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
               CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
               CREATE USER 'pig'@'%' IDENTIFIED BY '';
               CREATE USER 'pig'@'%';

二,授权:

      命令:GRANT privileges ON databasename.tablename TO 'username'@'host'

     说明: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.

      例子: GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
               GRANT ALL ON *.* TO 'pig'@'%';

      注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
           GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

三.设置与更改用户密码

     命令:SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword");

      例子: SET PASSWORD FOR 'pig'@'%' = PASSWORD("123456");

四.撤销用户权限

      命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';

     说明: privilege, databasename, tablename - 同授权部分.

      例子: REVOKE SELECT ON *.* FROM 'pig'@'%';

      注意: 假如你在给用户'pig'@'%'授权的时候是这样的(或类似的):GRANT SELECT ON test.user TO 'pig'@'%', 则在使用REVOKE SELECT ON *.* FROM'pig'@'%';命令并不能撤销该用户对test数据库中user表的SELECT 操作.相反,如果授权使用的是GRANT SELECT ON *.* TO 'pig'@'%';则REVOKE SELECT ON test.user FROM 'pig'@'%';命令也不能撤销该用户对test数据库中user表的Select 权限.

      具体信息可以用命令SHOW GRANTS FOR 'pig'@'%'; 查看.

五.删除用户

      命令: DROP USER 'username'@'host';

附表:在MySQL中的操作权限

ALTER

Allows use of ALTER TABLE.

ALTER ROUTINE

Alters or drops stored routines.

CREATE

Allows use of CREATE TABLE.

CREATE ROUTINE

Creates stored routines.

CREATE TEMPORARY TABLE

Allows use of CREATE TEMPORARY TABLE.

CREATE USER

Allows use of CREATE USERDROP USERRENAME USER, and REVOKE ALL PRIVILEGES.

CREATE VIEW

Allows use of CREATE VIEW.

DELETE

Allows use of DELETE.

DROP

Allows use of DROP TABLE.

EXECUTE

Allows the user to run stored routines.

FILE

Allows use of SELECT..INTO OUTFILE and LOAD DATA INFILE.

INDEX

Allows use of CREATE INDEX and DROP INDEX.

INSERT

Allows use of INSERT.

LOCK TABLES

Allows use of LOCK TABLES on tables for which the user also has SELECT privileges.

PROCESS

Allows use of SHOW FULL PROCESSLIST.

RELOAD

Allows use of FLUSH.

REPLICATION

Allows the user to ask where slave or master

CLIENT

servers are.

REPLICATION SLAVE

Needed for replication slaves.

SELECT

Allows use of SELECT.

SHOW DATABASES

Allows use of SHOW DATABASES.

SHOW VIEW

Allows use of SHOW CREATE VIEW.

SHUTDOWN

Allows use of mysqladmin shutdown.

SUPER

Allows use of CHANGE MASTERKILLPURGE MASTER LOGS, and SET GLOBAL SQL statements. Allows mysqladmin debug command. Allows one extra connection to be made if maximum connections are reached.

UPDATE

Allows use of UPDATE.

USAGE

Allows connection without any specific privileges.


<think>首先,用户提供了一个查询:"我想查找MySQL创建用户进行授权的方法 请问MySQL创建用户授权的操作方法"。用户要求参考站内引用,这些引用是关于MySQL创建用户授权的。 回顾系统级指令: - 所有行内数学表达式必须使用 $...$格式(但在这个上下文中,可能不涉及数学表达式)。 - 独立公式单独成段。 - LaTeX语法正确。 - 使用中文回答。 - 生成相关问题。 - 回答中引用的段落末尾自然添加引用标识,例如[^1]。 用户可见层指令: - 回答结构清晰,逐步解决问题。 - 保证回答真实可靠。 参考的站内引用: - 引用[1]: 关于创建用户授权的基本步骤。 - 引用[2]: 提到三种方式:INSERT USER表、CREATE USER、GRANT。重点在GRANT方法。 - 引用[3]: 授权后需要刷新权限;WITH GRANT OPTION;查看用户授权;设置密码。 - 引用[4]: 创建用户后需要授权;GRANT语法。 用户的需求是查找MySQL创建用户进行授权的方法。我需要基于这些引用提供操作步骤。 结构化回答: - 由于用户要求逐步解决问题,我应该一步一步解释操作。 - 步骤包括:创建用户授权权限、刷新权限、查看权限、设置密码等。 - 使用中文。 生成相关问题:在回答结束时,添加相关问题。 引用添加:在引用的部分末尾添加引用标识,如[^1]。引用来自提供的参考,所以我需要在适当的地方添加它们。 回答大纲: 1. **创建用户**:使用CREATE USER语句。 2. **授权权限**:使用GRANT语句。 3. **刷新权限**:授权后需要刷新以使权限生效。 4. **查看用户权限**:使用SHOW GRANTS。 5. **设置密码**:使用SET PASSWORD。 6. **其他注意事项**:如WITH GRANT OPTION。 基于引用整合细节: - 根据引用[1][4],创建用户后需要授权。 - 引用[3]强调了刷新权限、WITH GRANT OPTION、查看授权。 - 引用[2]提到GRANT方法是重点。 完整步骤: 1. **创建用户**:语法如 `CREATE USER 'username'@'host' IDENTIFIED BY 'password';` [^1] 2. **授权权限**:语法如 `GRANT privileges ON database.table TO 'username'@'host';` [^4] - 可以授予特定权限或所有权限。 - 使用WITH GRANT OPTION允许用户授权他人[^3]。 3. **刷新权限**:执行 `FLUSH PRIVILEGES;` 以使更改生效[^3]。 4. **查看用户权限**:使用 `SHOW GRANTS FOR 'username'@'host';` [^3] 5. **设置密码**:使用 `SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password');` [^3](注意:PASSWORD函数在较新版本可能弃用,建议使用ALTER USER或其他方法)。 确保语法正确:基于标准MySQL语法。 生成相关问题:在结束时添加§§相关问题§§部分。 最终回答结构: - 开头:简要介绍。 - 步骤1:创建用户。 - 步骤2:授权权限(包括不同权限类型)。 - 步骤3:刷新权限。 - 步骤4:查看修改权限(可选)。 - 结尾:总结。 - 相关问题。 添加引用: - 在引用的信息末尾添加引用标识。 例如:在提到创建用户时添加[^1],在授权时添加[^4],等等。 使用中文回答。 </think>以下是根据您的查询“MySQL创建用户并进行授权的方法”提供的详细操作指南。我将参考站内引用内容,逐步解释整个过程,确保回答真实可靠且基于MySQL官方文档的最佳实践[^1][^2][^3][^4]。MySQL用户管理分为创建用户授权权限两个核心步骤:创建用户后,用户仅能连接数据库服务器,但无操作权限;需要通过授权赋予具体权限[^4]。操作时需使用MySQL命令行或客户端工具(如MySQL Workbench),并确保您有管理员权限(如root用户)。 ### 步骤1: 创建用户MySQL中,创建用户的常用方法是使用 `CREATE USER` 语句。语法如下: ``` CREATE USER 'username'@'host' IDENTIFIED BY 'password'; ``` - **参数说明**: - `'username'`: 新用户的名称(例如 `'myuser'`)。 - `'host'`: 用户可连接的主机地址(如 `'localhost'` 表示本地连接,`'%'` 表示任何主机)。 - `'password'`: 用户的密码(需用单引号包裹)。 - **示例**: 创建一个用户名为 `testuser`,可从任何主机连接,密码为 `mypassword` 的用户: ``` CREATE USER 'testuser'@'%' IDENTIFIED BY 'mypassword'; ``` **注意**: 创建用户后,用户只能连接到数据库服务器,但没有任何操作权限,需后续授权[^1][^4]。 ### 步骤2: 授权权限 使用 `GRANT` 语句为用户授权。语法如下: ``` GRANT privileges ON database.table TO 'username'@'host' [WITH GRANT OPTION]; ``` - **参数说明**: - `privileges`: 要授予的权限列表: - **授予所有权限**: 使用 `ALL PRIVILEGES`(例如,授予用户数据库的所有权限)[^1]。 - **授予特定权限**: 常用权限包括 `SELECT`(查询)、`INSERT`(插入)、`UPDATE`(更新)、`DELETE`(删除)、`CREATE`(创建表)等[^1][^3]。 - `database.table`: 权限应用的对象(例如 `*.*` 表示所有数据库表,`mydb.*` 表示特定数据库的所有表)。 - `'username'@'host'`: 创建用户时指定的用户主机。 - `[WITH GRANT OPTION]`: 可选参数,允许用户将自身权限授予其他用户[^3]。 - **示例**: - 授予用户 `testuser` 对数据库 `mydb` 的所有表的所有权限: ``` GRANT ALL PRIVILEGES ON mydb.* TO 'testuser'@'%'; ``` - 授予用户 `testuser` 对特定数据库的 `SELECT` `INSERT` 权限: ``` GRANT SELECT, INSERT ON mydb.mytable TO 'testuser'@'%'; ``` - 授予用户权限并允许其授权他人(添加 `WITH GRANT OPTION`): ``` GRANT SELECT ON mydb.* TO 'testuser'@'%' WITH GRANT OPTION; ``` **关键点**: 授权后,用户需重连MySQL才能生效[^3]。 ### 步骤3: 刷新权限 授权操作后,必须刷新权限缓存以使更改立即生效。运行以下命令: ``` FLUSH PRIVILEGES; ``` **注意**: 如果未刷新,权限更改可能延迟生效(通常在MySQL重启后),建议每次授权后执行此命令[^3]。 ### 步骤4: 查看用户权限(可选) 使用 `SHOW GRANTS` 语句验证权限设置: ``` SHOW GRANTS FOR 'username'@'host'; ``` - **示例**: 查看用户 `testuser` 的权限: ``` SHOW GRANTS FOR 'testuser'@'%'; ``` ### 步骤5: 设置或更改用户密码(可选) 如果需要修改用户密码,使用 `SET PASSWORD` 语句: ``` SET PASSWORD FOR 'username'@'host' = PASSWORD('new_password'); ``` - **注意**: `PASSWORD()` 函数在MySQL 5.7及以后版本中可能弃用,推荐使用 `ALTER USER` 语句(例如 `ALTER USER 'testuser'@'%' IDENTIFIED BY 'new_password';`)[^3]。 ### 总结 - MySQL创建用户授权的基本流程为:创建用户授权权限 → 刷新权限。 - 授权后,用户才能执行具体操作;使用 `WITH GRANT OPTION` 可扩展授权能力[^2][^3]。 - 建议操作后验证权限,以确保安全性。总耗时通常不到1分钟。 **警告**: 在生产环境中,遵循最小权限原则(仅授予必要权限),避免使用 `ALL PRIVILEGES` 除非必要,以减少安全风险。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值