mysql新建用户并授权到某个表

本文详细介绍如何使用MySQL命令创建用户、分配本地及远程访问权限、授予特定数据库操作权限,并介绍了撤销权限的方法以及刷新权限的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、用root用户登录,然后进入mysql库

mysql -uroot -p123456

use mysql;

2、创建用户,localhost代表本地用户,此用户不能远程登录,即无法通过远程的mysql客户端(navicate,SQLyog)登录。%代表远程用户。执行2个create该用户本地、远程都可登录。

CREATE USER 'bdc'@'localhost' IDENTIFIED BY 'bdc'; 

CREATE USER 'bdc'@'%' IDENTIFIED BY 'bdc'; 

3、授权命令。第一种是某个库的某个表,第二种是某个库(vod)的所有库表所有权限。

GRANT SELECT, INSERT, UPDATE, REFERENCES, DELETE, CREATE, DROP, ALTER, INDEX, CREATE VIEW, SHOW VIEW ON `dailyreport`.yuanxian_info to 'bdc'@'%' identified  by 'bdc'; 

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

4、刷新授权,刷新后才奏效。

flush privileges;

ok啦~******记事本**************************分割线*******************************

5、补充:如果想重新授权,需要revoke之前授权

revoke all on *.* from bdc@localhost;

有的时候删除用户了drop user 'bdc'@'%'; 登录后还报错,也是需要刷新一下授权。

flush privileges;

[root@localhost ~]# mysql -ucdm -pcdm

ERROR 1045 (28000): Access denied for user 'cdm'@'localhost' (using password: YES)

下面这句,可以把localhost用户改为远程用户,这样可以限制远程的用户本地登录不了,本地用户客户端登录不了。

update user set host = '%' where user = 'zhiban';

<think>好的,用户想要在MySQL中创建一个用户授权某个数据库的所有权限,以便让该用户能够远程连接。我需要确保回答结构清晰,分步骤说明,同时符合系统级指令中的格式要求。首先,我需要回忆一下MySQL创建用户授权的流程,确保语法正确。 首先,创建用户的命令是CREATE USER,但需要注意MySQL的版本差异。8.0以上可能需要先创建用户授权,而旧版本可能允许在授权时自动创建用户。需要提醒用户注意版本区别。 然后是授权部分,使用GRANT语句赋予所有权限,数据库名和名需要用反引号包裹,或者根据是否有特殊字符决定。同时,要指定用户可以从任意主机连接,所以用户名后面要跟'%',示允许所有远程主机。但用户可能需要修改成特定的IP或域名,这里需要给出例子。 接下来,授权后需要FLUSH PRIVILEGES使权限生效,这一步不能漏掉。 然后测试连接部分,需要确保MySQL服务器的防火墙开放了3306端口,或者用户修改的端口。同时,检查MySQL配置文件中的bind-address是否为0.0.0.0,允许远程连接。 可能会有常见问题,比如用户创建的主机部分是否正确,权限是否刷新,以及防火墙设置等。需要列出这些点,帮助用户排查。 还要注意安全性问题,提醒用户如果不需要所有权限,应该按需分配,避免使用%主机,尽量限制IP范围。 在格式上,所有的代码和命令需要用反引号包裹,行内数学公式用$...$,但这里可能用不上数学公式,所以主要注意代码块的正确格式。不过根据系统指令,独立代码块应该用$$...$$,但可能用户这里需要的是代码示例,所以可能需要使用代码块标记,不过原指令中提到的独立公式用$$,但实际回答中代码应该用反引号。可能用户需要确认这点,但根据用户提供的例子,比如$(a+b)^2$,是行内公式。可能这里的代码部分需要用反引号,而数学公式用$符号。需要区分开来。 总结步骤: 1. 登录MySQL 2. 创建用户(注意主机部分) 3. 授予数据库权限 4. 刷新权限 5. 检查防火墙和配置文件 6. 测试连接 需要分步骤详细说明,每个命令的正确写法,给出示例,比如数据库名、用户名和密码的占位符替换。同时提醒安全性问题,比如强密码和权限限制。</think>在 MySQL 中创建用户授权远程访问某个数据库的完整步骤如下: --- ### 1. 登录 MySQL ```bash mysql -u root -p # 使用 root 用户登录 ``` --- ### 2. 创建新用户 ```sql CREATE USER '用户名'@'%' IDENTIFIED BY '密码'; ``` - `用户名`:自定义名称(如 `dev_user`) - `%`:允许从任意 IP 远程连接(如需限制 IP,改为 `'192.168.1.%'` 等格式) - `密码`:建议使用高强度密码(如 `P@ssw0rd!2023`) --- ### 3. 授予数据库权限 ```sql GRANT ALL PRIVILEGES ON `数据库名`.* TO '用户名'@'%'; FLUSH PRIVILEGES; -- 刷新权限生效 ``` - `数据库名`:需授权的数据库名称(如 `app_db`) - `ALL PRIVILEGES`:赋予所有权限(包括增删改查、结构修改等) - 反引号 <code>`</code>:用于包裹含特殊字符的数据库名(如无特殊字符可省略) --- ### 4. 验证用户权限 ```sql SHOW GRANTS FOR '用户名'@'%'; ``` --- ### 5. 配置远程访问 1. **修改 MySQL 配置文件** 找到 `my.cnf` 或 `my.ini`,确保包含以下配置: ```ini bind-address = 0.0.0.0 # 允许所有 IP 连接 ``` 2. **开放防火墙端口** ```bash sudo ufw allow 3306/tcp # 开放 MySQL 默认端口 ``` --- ### 6. 测试远程连接 ```bash mysql -h 服务器IP -u 用户名 -p ``` 输入密码后成功登录即示配置成功。 --- ### 常见问题排查 1. **权限未生效** - 检查是否执行 `FLUSH PRIVILEGES` - 确认授权语句中数据库名和用户名拼写正确 2. **连接被拒绝** - 检查防火墙是否开放 3306 端口 - 确认 MySQL 配置中 `bind-address` 已修改 3. **仅需部分权限** 替换 `ALL PRIVILEGES` 为特定权限(如 `SELECT, INSERT, UPDATE`) --- ### 安全性建议 1. 尽量限制 IP 范围(避免使用 `%`) 2. 定期更新密码 3. 按需分配权限(避免滥用 `ALL PRIVILEGES`)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值