# 起因

最近在做 JAVA 实训课程设计,写了一个树洞小程序,后端使用的是 Springboot+Mybatis,刚好有自己的服务器,于是就想把后端部署到服务器上。数据库使用的是 MySql,在部署中搜了很多资料,看了很多篇文章,跌跌撞撞花了不少力气才部署上去,于是就像写篇博客,一来自己加深印象方便以后配置,二来也希望可以帮助到大家。博主的服务器系统为 ubuntu 20.04 LTS。

# 1. 安装数据库

首先拥有一台云服务器。

1
2
sudo apt-get update
sudo apt-get install mysql-server

服务端只需要安装 server 就行了,不必安装 client

# 2. 服务器添加相应的安全组

进入云服务器界面,点击更多添加安全组,博主用的是阿里云的服务器。<br>

端口设置为 3306(MySql 服务默认的端口号),授权对象选择 0.0.0.0/0(表示任意 IP)。注意方向为 "入方向"

添加安全组

# 3. 开启 MySql 远程登录

打开 MySql 的配置文件

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

MySql 默认只允许本地登录,但是我们使用的是云服务器,在自己电脑上远程访问方便开发和管理,所以我们需要手动开启远程登录。

MySql配置文件

找到 bind-address=127.0.0.1 这一行,将其注释掉(博主已经修改过了)。修改后保存,并且重启 MySql 服务才能生效

1
2
3
sudo systemctl restart mysql.service

sudo service mysql restart

# 4. 创建远程访问用户

使用 root 用户登录数据库

1
mysql -u root -p

创建用户

1
2
3
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
eg:
CREATE USER 'treehole'@'%' IDENTIFIED BY '123456';

username:用户名 <br>

host:指定该用户可以在哪台主机上登陆,如果是本地用户可以写 localhost,如果想让该用户可以从任意主机远程登录可以填 %<br>

password:登录密码,密码可以为空。为空时可以不用输入密码登陆。

# 5. 给远程访问用户授权

授权语句

1
2
3
GRANT privileges ON databasename.tablename TO 'username'@'host';
eg:
GRANT all privileges ON treehole.* TO 'treehole'@'%';

privileges:用户的操作权限,如 SELECT,INSERT,UPDATE 等,如果要授予所的权限则使用 ALL<br>
databasename:数据库名 <br>
tablename:表名 <br>

如果要授予该用户对所有数据库和表的相应操作权限则可用 * 表示 <br>

刷新授权

1
flush privileges

这一步一定要做,不然无法成功!这句表示从 mysql 数据库的 grant 表中重新加载权限数据,因为 MySQL 把权限都放在了 cache 中,所以在做完更改后需要重新加载。<br>

更多关于 MySql 数据库的命令详见 Ubuntu 安装和使用 MySQL,非常好的一篇文章,简单易懂且全面。

# 6. 远程访问

博主开发时使用的 idea,因此使用 idea 中的 DB Browser。

访问

Host:服务器 IP 地址

Port:MySql 服务端口号

Database:注意这里默认是 mysql,不要忘了修改为你想要访问的数据库

Authentication:选择 User/Password,如果没有设置密码就选择 User