在服务器(ECS)部署 MySQL 操作流程
- 云服务器(ECS),如:阿里云、华为云、腾讯云等。
- IDC服务器。
1. 远程登录 Windows 服务器,安装好 MySQL 数据库服务。
My SQL Server 下载:MySQL :: Download MySQL Community Server
2. 安装好后,进入到 MySQL 安装目录下 bin 文件夹(如:C:\Program Files\MySQL\MySQL Server 8.0\bin),输入以下 命令来测试是否安装成功。
mysql -h localhost -u root -p123456
# -h:表示后跟 MySQL 服务器名
# -u:表示后跟 MySQL 登录用户名
# -p:表示后跟 MySQL 登录密码
# 注:-h和-u参数后面可以有空格或没有空格都可以;-p参数与密码值之间则不能有空格,否则回车后会显示输入密码提示。
3. MySQL 默认情况下,只允许 localhost 连接。若需要外部 IP 连接到 MySQL,确保 MySQL 数据库里"user"表中有一个允许从远程IP地址连接的用户。
其中,“user”表中 host 列表示该用户可以访问主机情况,默认是 localhost(表示本地访问)。若要允许远程访问,则将 host 值改为“%”即可。
- 对预设管理员用户 root 授权远程IP访问权限。
mysql> use mysql; # use命令指定使用的数据库。 MySQL数据库用户都放在 mysql 数据库下的“user”表中。
mysql> select user,host from user; # 查询 user 表中已存在的用户数据,可以看到 root 用户的 host 为 localhsot
+------------------+-----------+
| user | host |
+------------------+-----------+| mysql.infoschema | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
mysql> update user set host='%' where user='root'; # 将 root 用户的"host"值更新为"%"
mysql> flush privileges; # 将当前user和privilige表中的用户信息/权限设置从mysql库(MySQL数据库的内置库)中提取到内存里
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; # 为 root 用户进行授权,任意主机以用户 root 和密码连接到 mysql 服务器
mysql> flush privileges;# grant语法: grant 权限名(所有的权限用all) on 库名(*全部).表名(*全部) to ‘要授权的用户名’@’%’(%表示所有的IP,可以只是一个IP) identified by “密码”;
- 创建允许远程IP访问权限的用户。
mysql> use mysql;
mysql> CREATE USER 'user'@'%' IDENTIFIED BY '123456';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
4. 完成上述处理后,目前还是不能远程访问 MySQL 数据库。还需要在云服务器(ECS)上设定防火墙访问规则。
打开阿里云服务器(ECS)>> 安全组 >> 访问规则 下的“入方向”,增加 MySQL 端口(3306)允许访问的授权,如下截图:
5. 若 MySQL 服务器在配置文件(通常是my.cnf或my.ini)指定特殊IP地址访问设定(如:bind-address = 192.168.0.4),如下:
[mysqld]
bind-address = 192.168.0.4
则需要将 bind-address 配置项更改为 0.0.0.0,允许MySQL监听所有IP地址。
mysql -h 127.0.0.1 -u root -p123456
注:MySQL 在默认情况下是没有指定 bind-addrerss 配置信息,若没有可以在 [mysqld] 下手动添加。
6. 完成上述设定后,在外部可以使用 MySQL 客户端管理工具(如:Navicat)通过远程 IP 地址来访问 MySQL 数据库。
