MySQL 创建用户与开启远程登录完整教程
wxk1991 Lv3

MySQL 创建用户与开启远程登录完整教程

很多人在安装完:

1
MySQL 8

后,会继续遇到:

  • Navicat 无法连接
  • 远程连接失败
  • 3306 无法访问
  • Access denied
  • 程序无法连接数据库

原因通常:

1
MySQL 默认禁止远程连接

本篇文章教你:

  • 创建 MySQL 用户
  • 创建数据库
  • 开启远程访问
  • 配置 bind-address
  • 开放 3306 端口
  • 使用 Navicat 远程连接

一、登录 MySQL

使用 root 登录:

1
mysql -u root -p

输入之前设置的密码:

1
mmkk**789

二、创建数据库

例如:

创建:

1
aix

数据库。

执行:

1
CREATE DATABASE aix;

查看数据库是否创建成功

执行:

1
SHOW DATABASES;

会看到:

1
aix

说明创建成功。


三、创建本地用户

创建:

1
aix

用户。

密码:

1
aix**888

执行:

1
2
CREATE USER 'aix'@'localhost'
IDENTIFIED BY 'aix**888';

localhost 是什么意思?

1
仅允许本机连接

例如:

  • Java 程序
  • PHP
  • Node.js

运行在:

1
同一台服务器

时可以使用。


四、授予数据库权限

执行:

1
2
3
GRANT ALL PRIVILEGES
ON aix.*
TO 'aix'@'localhost';

aix.* 是什么意思?

表示:

1
aix 数据库下所有表

ALL PRIVILEGES

表示:

1
所有权限

包括:

  • 查询
  • 新增
  • 删除
  • 修改
  • 创建表

五、开启远程登录

如果你需要:

  • Navicat
  • DBeaver
  • 本地程序
  • 远程服务器

连接 MySQL。

必须:

1
开启远程用户

创建远程用户

执行:

1
2
CREATE USER 'aix'@'%'
IDENTIFIED BY 'aix**888';

% 是什么意思?

表示:

1
允许任意 IP 连接

授予远程权限

执行:

1
2
3
GRANT ALL PRIVILEGES
ON aix.*
TO 'aix'@'%';

六、刷新权限

执行:

1
FLUSH PRIVILEGES;

七、退出 MySQL

执行:

1
EXIT;

八、配置 MySQL 允许远程连接

默认情况下:

1
MySQL 只监听本地

即:

1
127.0.0.1

所以:

1
远程无法访问

编辑 MySQL 配置文件

Ubuntu 通常:

1
vi /etc/mysql/mysql.conf.d/mysqld.cnf

修改 bind-address

找到:

1
[mysqld]

修改:

1
bind-address = 127.0.0.1

为:

1
bind-address = 0.0.0.0

0.0.0.0 是什么意思?

表示:

1
监听所有 IP

这样:

1
远程设备才能连接

九、重启 MySQL

执行:

1
sudo systemctl restart mysql

十、开放 3306 端口

Ubuntu 如果开启了:

1
ufw 防火墙

需要开放:

1
3306

开放端口

执行:

1
sudo ufw allow 3306/tcp

查看防火墙状态

执行:

1
sudo ufw status

云服务器额外注意

如果你使用:

  • AWS
  • 阿里云
  • 腾讯云
  • Oracle Cloud

还需要:

1
在安全组开放 3306

否则:

1
外部仍然无法访问

测试远程连接

本地电脑:

例如:

1
Navicat

配置:

配置 内容
主机 服务器 IP
端口 3306
用户名 aix
密码 aix**888

查看 MySQL 当前监听状态

执行:

1
sudo ss -tunlp | grep 3306

如果看到:

1
0.0.0.0:3306

说明:

1
远程监听成功

推荐安全方案

生产环境:

1
不要直接开放 root

建议:

  • 单独业务用户
  • 限制数据库权限
  • 限制来源 IP
  • 使用强密码

更安全。


推荐权限方案

用户 用途
root 管理
aix 业务程序
backup 备份
readonly 只读查询

常见问题

1. Access denied

原因:

  • 用户密码错误
  • 权限未刷新
  • 用户 Host 不匹配

2. 3306 无法连接

检查:

  • 防火墙
  • 安全组
  • bind-address
  • MySQL 是否启动

3. Navicat 超时

通常:

1
是安全组没开放

或者:

1
防火墙拦截

查看所有用户

执行:

1
SELECT user, host FROM mysql.user;

删除用户

例如:

1
DROP USER 'aix'@'%';

修改密码

执行:

1
2
ALTER USER 'aix'@'%'
IDENTIFIED BY 'new_password';

总结

MySQL 开启远程连接:

核心步骤:

步骤 内容
1 创建数据库
2 创建用户
3 授权
4 修改 bind-address
5 重启 MySQL
6 开放 3306

重点:

1
bind-address 和 防火墙

是:

1
最容易遗漏的地方

非常适合:

  • Ubuntu
  • 云服务器
  • Java 后端
  • Node.js
  • Vue 项目
  • Navicat 远程管理