Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库

步骤如下:
1.刚安装的centos7系统可能会出现使用不了yum命令的情况:Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库
解决方法:在命令行输入vi /etc/sysconfig/network-scripts/网卡文件,修改ONBOOT=yes,按ESC,输入:wq 按回车,保存后重启虚拟机即可使用yum命令。
查看网卡文件,例如我的网卡文件就是ifcfg-enp0s3,使用vi命令打开修改即可:

Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库
修改后如下所示:

Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库
2.进行系统源更新操作,命令行输入:yum update,会提示是否下载更新的文件,输出y按回车继续

3.输入ifconfig 查看本机ip地址信息(待会儿远程连接数据库的时候用得上),可能会出现ifconfig无法使用的报错信息
解决方法:输入yum install net-tools 按回车进行下载即可使用例如我的虚拟机网卡2的IP地址是:192.168.146.5
Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库
4.下载Mysql,官网下载安装mysql-server
命令如下:
yum仓库下载MySQL:

# yum localinstall https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm

yum安装MySQL:

# yum install mysql-community-server

启动MySQL服务:

# service mysqld start

检查MySQL服务状态:

# service mysqld status

查看初始密码(如无内容直接跳过):

# grep 'temporary password' /var/log/mysqld.log

本地MySQL客户端登录:

# mysql -uroot -p

输入密码为第5步查出的,如果没有,直接回车,然后输入命令 :

# flush privileges

修改root登录密码(注意要切换到mysql数据库,使用use mysql):

# ALTER USER 'root'@'localhost' IDENTIFIED BY '密码';

修改密码时可能会出现如下报错信息:
Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库
说明新设置的密码不符合系统的密码组合要求,解决方法:
先随意改动原始密码中的任意一个元素(不改动的话可能会出现报错:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.),改成同样类型的元素,例如我的原始密码如图:
Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库
先改成 xc/;vvTT1&Uk (此处我只改动最后一个元素):

# ALTER USER 'root'@'localhost' IDENTIFIED BY 'xc/;vvTT1&Uk';

然后重启mysql。

查看 mysql 初始的密码策略:

# SHOW VARIABLES LIKE 'validate_password%';

如下图:
Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库
首先需要设置密码的验证强度等级,设置 validate_password.policy 的全局参数为 LOW 即可:

# set global validate_password.policy=LOW; 

其他密码策略更改命令相同,根据自身需求更改即可,更改完密码策略就可以设置自己想要的简单密码方便使用了。

# ALTER USER 'root'@'localhost' IDENTIFIED BY 'xxxxxxxxxxx'; 

” 可以看到修改成功,表示密码策略修改成功了!同时密码也修改成功了,重启mysql即可。

5.Java程序访问它的数据库。所以,我们要对远程服务器进行设置,使它允许你进行连接。
在mysql shell中输入:

mysql> use mysql;
mysql> show tables;

Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库

mysql> select host from user;

Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库

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

Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库
6.开放3306端口访问权限

#firewall-cmd --zone=public --add-port=3306/tcp --permanent 

重启mysql服务,远程服务器就允许程序连接数据库了。
7.新建工程为“MysqlTest”,往该工程内导入jar包:mysql-connector-java-8.0.14.jar(版本自选,自行下载)
Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库
新建类MysqlJdbc用于测试远程连接mysql数据库,代码如下:

import java.sql.*;
public class MysqlJdbc {
  public static void main(String args[]) {
    try {
     //加载MYSQL JDBC驱动程序
     Class.forName("com.mysql.cj.jdbc.Driver");        
     System.out.println("Success loading Mysql Driver.");
    }
    catch (Exception e) {
      System.out.print("Error loading Mysql Driver!");
      e.printStackTrace();
    }
    try {
      //连接URL为   jdbc:mysql//服务器地址(使用ifconfig查询自己的ip地址)/数据库名  ,后面的2个参数分别是登陆用户名和密码
      Connection connect = DriverManager.getConnection(
        "jdbc:mysql://192.168.146.5:3306/mysql","root","jop123");    
      System.out.println("Success connect Mysql server!");
      Statement stmt = connect.createStatement();
      //user 为特定表的名称
      ResultSet rs = stmt.executeQuery("select * from user");
                                                             
      while (rs.next()) {
        System.out.println(rs.getString("host"));
      }
    }
    catch (Exception e) {
      System.out.print("Get data error.");
      e.printStackTrace();
    }
  }
}

运行结果:
Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库
至此,Windows中Elipse连接Virtualbox中Centos7虚拟机的Mysql数据库成功!若有纰漏或错误的地方,望留言指正。