在Linux上安装MariaDB数据库

前言

最近发现一款基于PHP的开源Wiki系统——MeadiaWiki,但是需要数据库支持,当时我还没有深入了解数据库。

在网上百度了一下数据库,作为开源阵营的狂热支持者,最后选定MariaDB。

简介

MariaDB数据库管理系统MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

安装

这里模拟的是在远程Linux服务器配置MariaDB,如果你在本地安装可以对下列步骤自行取舍。

第一步 登录远程服务器

具体步骤可以参考

第二步 通过包管理器的方式安装 MariaDB

Linux包管理器常见的有Debian的apt包管理器和RedHat的yum包管理器,这里以 yum 为例(用何种方式安装,取决于你的 Linux 系统和你的使用习惯),使用国内的阿里巴巴开源镜像站的MariaDB源

由于MariaDB版本较多,建议在官方页面上生成配置文件内容。

然后我们就会等到这样的配置内容

# MariaDB 11.2 CentOS repository list - created 2023-12-08 02:57 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
# rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# baseurl = https://rpm.mariadb.org/11.2/centos/$releasever/$basearch
baseurl = https://mirrors.aliyun.com/mariadb/yum/11.2/centos/$releasever/$basearch
module_hotfixes = 1
# gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgkey = https://mirrors.aliyun.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck = 1

新建 /etc/yum.repos.d/MariaDB.repo,填入工具生成的配置内容。

然后执行命令

sudo yun makecache    # 重建yum缓存
​
sudo yum update  # 如果没有更新系统的话可以执行这条命令
​
sudo yum install MariaDB-server  # 安装MariaDB

配置

执行下列代码进行相关配置

sudo mysql_secure_installation # 注意要使用管理员权限执行

这时你可能会发现

-bash: mysql_secure_installation: command not found

这是因为MariaDB从10.5.2开始已经由mariadb-secure-installation命令替换

官方文档:mysql_secure_installation - MariaDB Knowledge Base

所以我们就要执行

sudo mariadb_secure_installation # 注意要使用管理员权限执行

然后你可能还会发现(不一定会出现)

-bash: mariadb_secure_installation: command not found

是的,又报错了。

我们就需要跳转到/usr/bin目录下再执行sudo mariadb_secure_installation

首先提示输入数据库 root 用户密码

  • Enter current password for root (enter for none):<–初次运行直接回车

设置密码

  • Set root password? [Y/n] <– 是否设置root用户密码,输入y并回车或直接回车

  • New password: <– 设置root用户的密码

  • Re-enter new password: <– 再输入设置的密码

其它配置

  • Remove anonymous users? [Y/n] <– 是否删除匿名用户

  • Disallow root login remotely? [Y/n] <–是否禁止root远程登录

  • Remove test database and access to it? [Y/n] <– 是否删除test数据库

  • Reload privilege tables now? [Y/n] <– 是否重新加载权限表

$ sudo mysql -u root // 直接回车即可,出现下面的文字,即为登录成功
​
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 13
Server version: 10.1.37-MariaDB-0+deb9u1 Raspbian 9.0
​
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
MariaDB [(none)]> 

然后通过如下步骤修改密码

MariaDB [(none)]> use mysql;
MariaDB [mysql]> UPDATE user SET plugin='mysql_native_password' WHERE user='root'; // 身份认证插件
MariaDB [mysql]> UPDATE user SET password=PASSWORD('你的root的密码') WHERE user='root'; // 设置密码
MariaDB [mysql]> flush privileges; // 刷新配置权限
MariaDB [mysql]> exit; // 退出

需要注意的是,上述的 SQL 语句结尾一定要加分号

然后重启服务

systemctl start mariadb

配置 MariaDB 权限用户

我们可以单独设置一个用户能具有足够 root 的权限执行所有操作,可以进行远程访问。当然你也可以使用 root 用户进行配置,但是不建议使用 root 用户。

注意以下步骤是使用 root 账户登录,并赋予新建用户权限的

// 以 root 账户登录数据库。回车后,输入数据库 root 账户的密码,即我们在上面设置的密码
sudo mysql -u root -p

建立用户并赋予权限

MariaDB [(none)]> CREATE USER 'username'@'host' IDENTIFIED BY 'password';

示例:

CREATE USER 'jimmy'@'%' IDENTIFIED BY '123456';

参数

说明

username

创建用户名

host

指定该用户在哪个主机上可以登陆,本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%

password

该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器

GRANT ALL PRIVILEGES ON databasename.tablename TO 'username'@'host' IDENTIFIED BY '123456' WITH GRANT OPTION;

示例:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'jimmy'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
// 也可省略为
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'jimmy'@'%';

参数

说明

privileges

用户的操作权限,如SELECT , INSERT , UPDATE 等。如果要授予所的权限则使用ALL

databasename

数据库名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*

tablename

表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示,如*.*

然后刷新上述设置

MariaDB [(none)]> flush privileges;

总示例:

$ mysql -u root -p
$ 输入密码
MariaDB [(none)]> CREATE USER 'jimmy'@'%' IDENTIFIED BY '123456';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'jimmy'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

配置远程访问

注意:在旧版本上的是修改 /etc/mysql/my.cnf 文件相关内容的,在新版本上没有这个文件,新版本的服务器需要修改 /etc/mysql/mariadb.conf.d/50-server.cnf 这个文件。

$ sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf
# 将bind-address这行注释掉
# 或者将127.0.0.1 这个值改为  0.0.0.0
$ systemctl restart mariadb // 重启服务


文章作者: 睿臻
本文链接:
版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Renzen
linux 安装教程 Linux
喜欢就支持一下吧