mysql-创建用户并授权,设置允许远程连接

本文详细介绍如何在MySQL中创建数据库、用户及授权,并配置Ubuntu系统以实现MySQL的远程访问功能。

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

一、创建用户并授权

1、登录mysql

  mysql -u root -q

2、创建数据库

  create database dbdata;//以创建dbdata为例

3、创建用户

创建user01,只能本地访问

  create user user01@'localhost' identified by 'password';

创建user02,可以远程访问

  create user user02@'%' identified by 'password'

4、修改用户密码

以user01为例:

  set password for 'user01'@'localhost'=password('anotherpassword')

5、授权

授予user01管理dbdata的全部权限

  grant all privileges on dbdata.* to user01;

授予user02查看权限,并修改密码

  grant select on *.* to 'user02'@'%' identified by 'anotherpassword';

二、设置mysql允许远程连接(ubuntu系统)

1、 sudo vi /etc/mysql/my.cnf

2、注释掉如下两行:

  bind-address=127.0.0.1

  skip-network(mysql5.6版本里没有这行)

3、sudo service mysql restart

结合一中的授权,被授权用户可以远程访问

 

转载于:https://www.cnblogs.com/gpdm/p/6492449.html

<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`)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值