在Linux上运行MariaDB
mariadb-10.4.7-linux
centos7.5
why?
Q: 为什么是Linux而不是某个发行版
A: 因为该方法基本对所有主流Linux发行版(x86_64)可用
Q: 主流Linux发行版不都是有apt yum 包管理软件吗,不可以一键安装吗?
A: 很不幸 我需要部署的server是没有外网的
准备工作
请注意! 该文章不面向小白! 本文假设你清楚安装过程中所需要的基本命令的使用!
在mariadb官网下载二进制安装包
Package Type找到 gzipped tar file
Source 找到 Linux x86_64
最终可以找到这样的文件mariadb-10.4.7-linux-systemd-x86_64.tar.gz (for systems with systemd)
本文安装的是最新的release 10.4.7
然后下载它
虽然体积非常之大 但安装过程中是不需要额外的组件的 非常省心
下载完之后拷贝到待安装的server上
install
安装之前
mariadb/mysql的Linux解压二进制版不会像是windows一样直接用mysqld --install service_name 就完成安装了
服务 环境变量 乃至用户都是需要自己手动配置的
以下的的安装步骤参考自官网 但步骤不一样 这是我认为的最佳安装方法
附上官网参考文档:
https://mariadb.com/kb/en/library/installing-mariadb-binary-tarballs/
开始安装
0x01 解压
解压到 mariadb-VERSION-OS
最终的路径看起来像是这样
/usr/local/mariadb-10.4.7-linux-systemd-x86_64
0x02 建立mysql目录的软连接
ln -s mariadb-VERSION-OS mysql
0x03 建立mysql用户和组
groupadd mysql
useradd -g mysql mysql
0x04 安装
# 进入mariadb的路径
cd mysql
# 安装
./scripts/mysql_install_db --user=mysql
注意 这里要对照命令执行 你所在的目录不对是无法安装的
0x05 分配权限
chown -R root .
chown -R mysql data
0x06 修改配置文件
这一步的目的是为了让 本机上的 mysqlclient mysqladmin 可以通过sock直接连接到server
如果你有其他解决方法这一步可以忽略
vim /etc/my.cnf
找到socket
修改为
socket=/tmp/mysql.sock
0x07 试启动MariaDB
./bin/mysqld_safe --user=mysql
这里会遇到一些错误
例如需要的文件夹没有创建或者是没有权限
根据日志来解决
日志路径就在控制台上
当然你可能还会遇到日志都没有权限创建出来的情况
你需要启动前创建出log文件的路径并赋权
如果你遇到了难以解决的问题请在本文留下评论
0x08 添加到系统服务
请确保 0x07步骤没有任何问题再执行该步骤
确保mariadb此时是未启动的
不同Linux发行版可能服务的路径不太一样
这里以centos为例
cp support-files/systemd/mariadb.service /usr/lib/systemd/system/mariadb.service
启动服务
service mariadb start
0x09 添加环境变量
这一步非必要 主要是能方便使用mysql的一些命令工具
export PATH=$PATH:/usr/local/mysql/bin/
0x0a 连接到MariaDB
默认的root用户无密码 仅限localhost连接
所以需要本机链接到mariadb调整
mysql -uroot
0x0b 增加一个可以远程访问的用户
在mysqlclient里执行
use mysql;
--修改权限。%表示针对所有IP,password表示将用这个密码登录root用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
--立即生效
FLUSH PRIVILEGES;
至此 大功告成
TIPS
惯例tips
这次没什么好讲的了 姑且算是都很顺利
那就随便唠唠
这种部署方式我推荐用在测试环境/开发环境
你可以看到部署完之后配置文件其实很少的 连仅本机访问的配置文件都没有
或者说还少一些步骤 可以把一些生产的预设配置拷贝过去
详情请参阅官方文档
总之对于我要搭建的测试环境就到此结束了