文章目录
1 前言
在 Windows 10 上的 VirtualBox 上安装完 RockyLinux 之后,就可以开始安装数据库了。听说 MariaDB 兼容 MySQL ,而且性能似乎比 MySQL 还好,所以这次尝试安装下它。
RockLinux 的安装教程,可参考我的另一篇文章 《VirtualBox安装RockyLinux并使用ssh访问》
2 参考
MariaDB 的官网是 https://mariadb.com/ 。由于 RockLinux 是类似于 CentOS 的系统,所以使用 yum 安装 MariaDB,官方也有详细的指南 https://mariadb.com/kb/en/yum ,我们就参考这篇指南,完成 MariaDB 的安装。
3 开始安装
3.1 运行官方脚本 添加 MariaDB 的源
首先就是运行如下命令,把 MariaDB 的源添加到 /etc/yum.repos.d/
目录下。
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
运行结果如下:
上面这行命令,会默认 将最新版本(此时是 2023年9月,最新版本是 11.1.2)的 MariaDB 添加到源中。所以如果想要安装旧版本的 MariaDB ,那么就得给这行命令再添加一些参数了。添加参数的话,可以参考另外一篇官方文档 https://mariadb.com/kb/en/mariadb-package-repository-setup-and-usage ,这里就不赘述了。
3.2 安装 MariaDB Server
执行如下命令,回车。
sudo dnf install MariaDB-server
运行结果如下图,输入 y
,然后回车
继续运行一会儿后,就显示 Complete 了,表示安装完成,如下图:
3.3 启动 MariaDB
安装完成后,MariaDB 默认情况下是没在运行的。
# 首先看下 MariaDB 的状态,看它是否已经在运行中
systemctl status mariadb
运行结果如下图,由此可知,MariaDB 未在运行,而且也不是开机自启动。
启动 MariaDB
systemctl start mariadb
然后再查看 MariaDB 的状态,可知它已在运行中。
4 SSH 登录 MariaDB
4.1 ssh 上使用 root 账号登录
在 Putty 上输入 root 用户名,直接就登录进去了,不需要密码。
mariadb -uroot
4.2 新建管理员账号并授权
/*
第1步,新建管理员账号
sjzadmin 是账号名(随便起)
'%' 表示任意 Host ,也就是可以远程连接
P_sjz123 是密码
*/
CREATE USER sjzadmin@'%' IDENTIFIED BY 'P_sjz123';
/*
第2步,授权
*/
GRANT ALL PRIVILEGES ON *.* TO 'sjzadmin'@'%' WITH GRANT OPTION;
/*
第3步,刷新
*/
FLUSH PRIVILEGES;
5 放行端口 3306
5.1 VirtualBox 上设置端口转发
5.2 Rocky Linux 防火墙放行 3306 端口
## 第1步 查看防火墙是否正在运行中。一般情况下是开机自启动的
firewall-cmd --state
## 第2步(可选) 如果防火墙没有运行中,可通过如下命令启动防火墙 并设置 开机自启动
# 启动防火墙
systemctl start firewalld
# 开机自启动防火墙
systemctl enable firewalld
## 第3步 查询 3306 端口是否已经放行了
# 查询当前哪些端口被放行了
firewall-cmd --zone=public --list-ports
# 查询 3306 端口是否放行了
firewall-cmd --query-port=3306/tcp
## 第4步 如果第3步发现 3306 端口没有被放行的话,就放行它
# 永久放行指定端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重载防火墙配置,让前面的配置生效
firewall-cmd --reload
## 第5步(可选)如果不想放行某个端口了,可以永久关闭它
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
6 使用 DBeaver 连接虚拟机上的 MariaDB
打开 DBeaver,按快捷键 Ctrl + Shift + N ,弹出新建数据库连接的窗口,如下图:
输入 URL 用户名密码 来连接 MariaDB
如此这般,便是连接成功了。
7 MariaDB 设置 表名称不区分大小写
经过上面的步骤后,我们的 DBeaver 可以连接上虚拟机里面的 MariaDB 了,但是,当我们新建一个数据库,然后新建表后,发现表名竟然是区分大小写的。具体如下:
7.1 首先创建数据库
如下图,字符集选择 utf8mb4 ,排序规则选择 utf8mb4_general_ci
7.2 然后执行下面的 SQL 创建表
DROP TABLE IF EXISTS USER_ACCOUNT;
CREATE TABLE USER_ACCOUNT
(
`USER_ID` VARCHAR(32) NOT NULL COMMENT '用户ID',
`USERNAME_EN` VARCHAR(32) NOT NULL COMMENT '用户名英文',
`USERNAME_ZH_CN` VARCHAR(255) NOT NULL COMMENT '用户名中文',
`ENCRYPTED_PASSWORD` VARCHAR(255) NOT NULL COMMENT '已加密的用户密码',
`USER_STATUS` VARCHAR(32) NOT NULL COMMENT '用户状态',
`TENANT_ID` VARCHAR(32) COMMENT '租户号',
`REVISION` INT COMMENT '乐观锁',
`CREATED_BY` VARCHAR(32) COMMENT '创建人',
`CREATED_TIME` DATETIME COMMENT '创建时间',
`UPDATED_BY` VARCHAR(32) COMMENT '更新人',
`UPDATED_TIME` DATETIME COMMENT '更新时间',
PRIMARY KEY (USER_ID)
) COMMENT = '用户账号表;';
7.3 接着查询这张表
发现表名大写就可以查询到,小写就报错:
-- 表名大写,也就是和前面的 DDL 语句一致的话,是可以查询到的
SELECT * FROM USER_ACCOUNT;
-- 表名小写就不行,就报错:Table 'mytest.user_account' doesn't exist
SELECT * FROM user_account;
7.4 解决方法
Putty 连接虚拟机的 RockLinux,在 /etc/my.cnf.d/
目录下,编辑 server.cnf
文件,如下:
vim server.cnf
做如下修改:
然后重启 mariadb,如下:
systemctl restart mariadb
接着验证下效果,在 Putty 上登录 mariadb:
最后,把先前建的数据库和表,都删除了,重建一下就可以了。
8 在 spring boot 中使用 mariadb
8.1 maven 依赖
到 https://mvnrepository.com/ 上搜索 mariadb-java-client
然后就可以得到如下 maven 依赖:
<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>3.2.0</version>
</dependency>
另外, 访问 MariaDB Connector/J 的官网 https://mariadb.com/kb/en/about-mariadb-connector-j/,可知,3.x 版本的兼容 java8、java11、java17,而 2.7.x 版本只兼容 java8 和 java11。
8.2 application.yml
如下:
spring:
application:
name: my-test
datasource:
url: jdbc:mariadb://192.168.56.1:3306/mytest?autoReconnect=true&allowMultiQueries=true
username: sjzadmin
password: P_sjz123
driver-class-name: org.mariadb.jdbc.Driver
上面 spring.datasource.url
问号后面的参数,可以从官方文档 https://mariadb.com/kb/en/about-mariadb-connector-j/ 上搜索得到其含义。
9 结语
感谢阅读~