MySQL5.7开启远程访问及Ubuntu18.04防火墙3306端口

本文讲述了在Ubuntu18.04上,如何开启MySQL5.7的远程访问,并配置系统防火墙允许3306端口通过,以解决Java程序远程连接数据库的问题。步骤包括修改MySQL配置文件、设置用户权限以及添加iptables规则。此外,还提到了关于SSL连接的WARN告警及其解决方案。

在虚拟机中安装了Ubuntu18.04,MySQL5.7。系统默认的root等只能在本地访问,host被限制为localhost,为了进行Java程序测试,本地eclipse访问虚拟机的数据库,避免用户管理混乱,特意新建一数据库和用户。

新建数据库ttmsg,用户ub64,开启ub64用户远程访问的过程。

--新建数据库ttmsg

mysql> CREATE DATABASE ttmsg;
Query OK, 1 row affected (0.00 sec)

--新建用户ub64,和登陆密码,设置访问限制为%,允许远程访问。
mysql> CREATE USER 'ub64'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)

--给新建的用户ub64访问数据库ttmsg的所有权限
mysql> grant all privileges on ttmsg.* to 'ub64'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)

--刷新权限列表,这样就可以用ub64用户登陆了
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

--新建数据表,开始测试。
mysql> CREATE TABLE Student(
    ->    ID   INT NOT NULL AUTO_INCREMENT,
    ->    NAME VARCHAR(20) NOT NULL,
    ->    AGE  INT NOT NULL,
    ->    PRIMARY KEY (ID)
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> show tables;
+-----------------+
| Tables_in_ttmsg |
+-----------------+
| Student         |
+-----------------+
1 row in set (0.00 sec)

在eclipse中调试java程序,尝试往Student表中插入数据,报错了。

------Records Creation--------
Exception in thread "main" org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
	at org.springframework.jdbc.datasource.DataSourceUtils.getConnection(DataSourceUtils.java:81)
	at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:612)
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:862)
	at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java
### 安装 MySQL 5.7Ubuntu 18.04 上,默认的软件仓库中提供了 MySQL 5.7 的版本。如果只需要安装 MySQL 5.7,可以直接使用 `apt` 包管理工具进行安装。以下是具体步骤: 1. 更新软件包列表: ```bash sudo apt update ``` 2. 安装 MySQL 5.7 服务器: ```bash sudo apt install mysql-server-5.7 ``` 3. 安装完成后,可以使用以下命令启动 MySQL 服务: ```bash sudo systemctl start mysql ``` 4. 设置 MySQL 服务开机自启动: ```bash sudo systemctl enable mysql ``` 5. 检查 MySQL 服务的状态,确保它正在运行: ```bash sudo systemctl status mysql ``` 6. 运行安全脚本以提高安全性: ```bash sudo mysql_secure_installation ``` 通过以上步骤,MySQL 5.7 就可以成功安装并配置好了。 ### 安装 MySQL 8 如果需要安装更高版本的 MySQL,例如 MySQL 8,可以通过官方的 MySQL APT 仓库进行安装。以下是具体步骤: 1. 下载 MySQL APT 配置包: ```bash wget https://dev.mysql.com/get/mysql-apt-config_0.8.26-1_all.deb ``` 2. 安装 MySQL APT 配置包: ```bash sudo dpkg -i mysql-apt-config_0.8.26-1_all.deb ``` 3. 在安装过程中,系统会提示选择 MySQL 版本。使用方向键选择所需的版本(例如 MySQL 8.0),然后按 Enter 键确认。 4. 更新软件包列表: ```bash sudo apt update ``` 5. 安装 MySQL 8: ```bash sudo apt install mysql-server ``` 6. 启动 MySQL 服务: ```bash sudo systemctl start mysql ``` 7. 设置 MySQL 服务开机自启动: ```bash sudo systemctl enable mysql ``` 8. 检查 MySQL 服务的状态,确保它正在运行: ```bash sudo systemctl status mysql ``` 9. 运行安全脚本以提高安全性: ```bash sudo mysql_secure_installation ``` 通过以上步骤,MySQL 8 就可以成功安装并配置好了。 ### 验证安装 无论安装的是 MySQL 5.7 还是 MySQL 8,都可以通过以下命令登录到 MySQL 服务器以验证安装是否成功: ```bash sudo mysql -u root -p ``` 输入密码后,如果成功进入 MySQL 命令行界面,则表示安装成功。 ### 配置远程访问 如果需要从其他机器访问 MySQL 数据库,还需要进行一些额外的配置: 1. 编辑 MySQL 配置文件: ```bash sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` 2. 找到 `bind-address` 行,并将其注释掉或更改为 `0.0.0.0` 以允许所有 IP 地址连接: ``` bind-address = 0.0.0.0 ``` 3. 保存并关闭文件。 4. 重启 MySQL 服务以应用更改: ```bash sudo systemctl restart mysql ``` 5. 登录到 MySQL 并创建一个允许从远程主机访问的用户: ```sql CREATE USER 'remote_user'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'remote_user'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 6. 确保防火墙允许 MySQL 端口(默认为 3306)的流量: ```bash sudo ufw allow 3306/tcp ``` 通过以上步骤,MySQL 数据库就可以从远程主机访问了。 ### 总结 在 Ubuntu 18.04 上安装 MySQL 数据库可以通过两种方式实现:安装默认的 MySQL 5.7 或者通过官方 APT 仓库安装 MySQL 8。安装完成后,可以通过运行安全脚本来提高安全性,并且可以配置远程访问以满足不同的需求。[^1]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值