• RockyLinux安装MariaDB


    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 -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
    
    • 1

      运行结果如下:

    在这里插入图片描述

      上面这行命令,会默认 将最新版本(此时是 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
    
    • 1

      运行结果如下图,输入 y ,然后回车

    在这里插入图片描述

      继续运行一会儿后,就显示 Complete 了,表示安装完成,如下图:

    在这里插入图片描述

    3.3 启动 MariaDB

      安装完成后,MariaDB 默认情况下是没在运行的。

    # 首先看下 MariaDB 的状态,看它是否已经在运行中
    systemctl status mariadb
    
    • 1
    • 2

      运行结果如下图,由此可知,MariaDB 未在运行,而且也不是开机自启动。

    在这里插入图片描述

      启动 MariaDB

    systemctl start mariadb
    
    • 1

      然后再查看 MariaDB 的状态,可知它已在运行中。

    在这里插入图片描述

    4 SSH 登录 MariaDB

    4.1 ssh 上使用 root 账号登录

      在 Putty 上输入 root 用户名,直接就登录进去了,不需要密码。

    mariadb -uroot
    
    • 1

    在这里插入图片描述

    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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    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 = '用户账号表;';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    7.3 接着查询这张表

      发现表名大写就可以查询到,小写就报错:

    -- 表名大写,也就是和前面的 DDL 语句一致的话,是可以查询到的
    SELECT * FROM USER_ACCOUNT;
    
    -- 表名小写就不行,就报错:Table 'mytest.user_account' doesn't exist
    SELECT * FROM user_account;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    7.4 解决方法

      Putty 连接虚拟机的 RockLinux,在 /etc/my.cnf.d/ 目录下,编辑 server.cnf 文件,如下:

    vim server.cnf
    
    • 1

      做如下修改:

    在这里插入图片描述

      然后重启 mariadb,如下:

    systemctl restart mariadb
    
    • 1

      接着验证下效果,在 Putty 上登录 mariadb:

    在这里插入图片描述

      最后,把先前建的数据库和表,都删除了,重建一下就可以了。

    8 在 spring boot 中使用 mariadb

    8.1 maven 依赖

      到 https://mvnrepository.com/ 上搜索 mariadb-java-client 然后就可以得到如下 maven 依赖:

    <dependency>
        <groupId>org.mariadb.jdbcgroupId>
        <artifactId>mariadb-java-clientartifactId>
        <version>3.2.0version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

      另外, 访问 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

      上面 spring.datasource.url 问号后面的参数,可以从官方文档 https://mariadb.com/kb/en/about-mariadb-connector-j/ 上搜索得到其含义。

    9 结语

      感谢阅读~

  • 相关阅读:
    swift语言用哪种库适合做爬虫?
    uniapp实战项目 (仿知识星球App) - - 自定义顶部导航栏和登录弹窗组件
    SpringMVC如何获取单选框的值呢?
    485. 最大连续 1 的个数(javascript)485. Max Consecutive Ones
    css溢出隐藏的五种方法
    The 2021 ICPC Asia Shenyang Regional Contest补题
    什么是Token,javascript 如何获取和禁用 cookie
    STM8应用笔记10.修改CPU的时钟
    Docker容器数据卷入门教程(超详细)
    Java---Date时间类
  • 原文地址:https://blog.csdn.net/ShiJunzhiCome/article/details/132968494