华为云搭建MySQL及远程访问问题汇总

最近买了一个华为云服务器,所以想把数据库搭建在云上,因为很少自己搭建数据库,所以中间遇到一些问题,记录下来自己和大家方便查阅

Liunx上安装MySQL

1.首先查看MySQL是否安装

dpkg -l | grep mysql

2.安装MySQL

apt insatll mysql -service

3.安装完成后使用以下命令检查是否安装成功:

netstat -an | grep mysql

如果看到有 mysql 的socket处于 LISTEN 状态则表示安装成功。

4.使用root用户登录数据库

mysql -u root -p

首次进去,输入密码时直接回车即可进入

2. 设置MySQL,使其可以远程访问

1.设置数据库允许外网访问

1.切换到mysql库
use mysql;
2.查看user表是否有host为%的字段
select user,host from user;
3.如果没有host为%的字段需要手动添加
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
# by后面的字段是root账户的登录密码
4.刷新数据库
flush privileges
5.退出数据库,重新启动MySQL

2.开放华为云端口(大部分云都是相同过程)

1.选中自己的服务器种类,进入安全组
2.选择入方向规则,选择快速添加规则
3.选择数据库,全选或者单选MySQL都可以,点击确定
4.本地连接,主机为华为云的弹性ip地址,其他按照正常配置就可以

3. 重点来了

以上是按照正常流程,不出问题的情况,但是怎么可能会不出问题呢,以下就是我在本地连接过程中遇到的问题,其实只有一个问题就是连接失败,报2003错误,我的解决方法如下:

1.修改MySQL的配置文件

打开MySQL中mysqld.cnf配置文件

vim /etc/mysql/mysql.conf.d/mysqld.cnf

找到bind-address = 127.0.0.1,在其前面加#,将其注释
修改完配置,退出MySQL重新启动服务
但是我用navicat连接还是失败,又找到了第二种方法

2.重新授权

update user set host = '%' where user ='root' and host =localhost;

网上说到这里基本是可以解决问题了,但是我还是连接失败,所以找到了第三种解决办法

3.修改防火墙配置

1.查看防火墙状态

firewalld-cmd --state
# 结果显示为running或者not running

2.如果防火墙开启,则关闭防火墙

systemctl stop firewalld.service

3.关闭防火墙后重新开启

systemctl start firewalld.service

4.开启3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent
# zone – 作用域
# add-port=80/tcp – 添加端口,格式为:端口/通讯协议
# permanent – 永久生效,没有此参数重启后失效

5.重启防火墙

firewall-cmd --reload

经过一波三折,在设置完防火墙后,终于可以在本地连接MySQL了,因为是新手菜鸟,所以在这里记录一下。