搭建远程mysql服务器(阿里云轻量应用服务器)

搭建远程 mysql 服务器

环境

  • ubuntu18.04

安装 mysql

# 安装 mysql 服务端
$sudo apt install mysql-server
# 安装 mysql 客户端
$sudo apt install mysql-client

登陆mysql

输入以下代码后,直接回车,因为我是新安装的所以,不需要输入密码即可登陆成功

$mysql -u root -p

查看全部用户和用户权限

发现所有的用户只能够本地访问 mysql 服务器

mysql> SELECT user, host FROM user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.01 sec)

创建一个新用户,开启远程访问

虽然我们可以直接用 root 用户远程访问 mysql 服务器,这里我新创建一个用户

# 使用 root 登陆后,进入 mysql 数据库
mysql>use mysql;
# 新创建一个用户,%匹配所有服务器
# 用户名    : 登陆用户名
# %        : 能够访问该数据库的 IP 地址,%匹配全部 IP 地址
# 用户名密码 : 用户名密码
mysql>create user '用户名'@'%' identified by '用户名密码';
# 对新创建的用户授权,这里的是授权所有功能
mysql>grant all privileges *.* to '用户名'@'%';
# 刷新
mysql>flush privileges;

查看用户表

发现 kyfxb 允许全部 IP 访问

mysql> SELECT user, host FROM user;
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| kyfxb            | %         |
| debian-sys-maint | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.01 sec)

如果 host 为 % 表示允许全部 IP 访问该用户,如果 host 不为 % 可以手动更新

修改 host 为 %

mysql> USE mysql
Database changed
mysql> UPDATE USER SET host = '%' WHERE user = '用户名'

由于我使用的是阿里云的服务器,还要开启mysql默认端口3306

控制台>轻量应用服务器>点击自己的服务器>安全>防火墙>添加一条规则

在这里插入图片描述

查看 MySQL 监听的端口

root@iZuf683kkxxmx5ts3b6mniZ:~# netstat -anpt
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      7777/mysqld

如果不是 0.0.0.0:3306 则需要修改 MySQL 配置文件

MySQL 配置文件

/etc/mysql/mysql.conf.d

修改 MySQL 监听所有 IP 地址

修改 mysql 服务器配置文件

# 在 mysqld 下面添加或者替换一个属性
[mysqld]
bind-address=0.0.0.0  #监听全部地址或者指定的ip地址

重启 mysql 服务

$service mysql restart

查看端口情况

netstat -anpt

端口情况

在这里插入图片描述

使用 idea 测试连接

在这里插入图片描述

连接状况

没有连接成功

报错

com.intellij.execution.ExecutionException: Error: Could not create the Java Virtual Machine.
    Error: A fatal exception has occurred. Program will exit.

暂时没有解决,目前猜测是内存不够,后续再测试一下

如上猜测正确,释放一些内存后,控制来连接成功,但是 idea 提供的 Database 仍然没有连接成功

package xyz.group.kyfxb.config;

import org.junit.jupiter.api.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * @package xyz.group.kyfxb.config
 * @title MysqlConnectorTest
 * @description 测试连接远程 MySQL 服务器
 * @author snowflake
 * @date 2020/2/2 - 15:54
 * @version v1.0
 */
public class MysqlConnectorTest {

    private String url = "jdbc:mysql://<ip地址>:3306/kyfxb?serverTimezone=GMT&useSSL=true";
    private String username = "kyfxb";
    private String password = "kyfxb";

    static {
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testConnection() throws SQLException {
        Connection con = DriverManager.getConnection(url, username, password);
        System.out.println(con);
    }

}

Connection 对象信息

com.mysql.cj.jdbc.ConnectionImpl@7d286fb6
17:14	Connection to [email protected] failed.
		[08S01] Communications link failure.
		The last packet successfully received from the server was 41 milliseconds ago.  The last packet sent successfully to the server was 41 milliseconds ago.

ed.
[08S01] Communications link failure.
The last packet successfully received from the server was 41 milliseconds ago. The last packet sent successfully to the server was 41 milliseconds ago.

发布了80 篇原创文章 · 获赞 13 · 访问量 9082

猜你喜欢

转载自blog.csdn.net/qq_39424178/article/details/104212784