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