编译安装mariadb遇到的问题总结

1.安装依赖

根据MariaDB官方项目文档,我们需要安装依赖:gcc/g++ 4.8.5、GNU make 3.75 or later、bison (3.0)、libncurses、zlib-dev和libevent-dev。

我们使用软件包管理器安装这些依赖即可,以下是Debian/Ubuntu使用软件包管理器安装,CentOS记得替换为yum的仓库名:

1.1安装cmake

sudo apt-get install cmake
如果已经安装的并且版本比较低,需要版本升级:[https://blog.csdn.net/i_coding_/article/details/131883590]

1.2安装GCC编译器

sudo apt-get install build-essential

1.3安装Openssl以及Openssl依赖

sudo apt-get install openssl libssl-dev

1.4安装bison

sudo apt-get install bison

1.5安装libncurses-dev

sudo apt-get install libncurses-dev

2下载源码

https://mariadb.org/mariadb/all-releases/

2.1下载10.0.64源码

wget ‘https://downloads.mariadb.org/interstitial/mariadb-10.0.64/source/mariadb-10.0.64.tar.gz’

2.2解压

在这里插入图片描述

2.3Cmake编译

我们使用Cmake进行编译,我的编译参数是:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/mydata/data \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_READLINE=1 \
-DWITH_SSL=system \
-DWITH_ZLIB=system \
-DWITH_LIBWRAP=0 \
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

这里解释一下编译参数:

DCMAKE_INSTALL_PREFIX:MariaDB的安装地址
DMYSQL_DATADIR:数据库文件存放地址
DMYSQL_UNIX_ADDR:sock文件编译后存放地址
以上参数需要和下文my.cnf同步(如果你需要修改我的编译参数,记得下文配置文件一并修改)

之后,我们进行安装即可:

make

过程可能很久很久,建议使用screen挂起后台!!!

另外,如果你的Linux设备是多核,可以加上-j参数以加快编译速度,比如我的是腾讯云轻量应用服务器4核服务器:

make -j 4 && make install

在这里插入图片描述

安装好后,到/usr/local文件夹下,即可看到我们的MariaDB:
在这里插入图片描述
初始化和配置
接下来,我们需要初始化MariaDB

  1. 设置用户
    创建mysql用户组和用户:
groupadd -g 306 -r mysql
useradd -u 306 -g mysql -r -s /sbin/nologin mysql

创建SQL目录(上文编译参数内):

mkdir /mydata/data -p
归其为mysql用户
chown mysql:mysql /mydata/data
进入MariaDB安装地址,修改文件归属到mysql用户:
cd /usr/local/mysql
chgrp mysql ./*

修改成功,我们可以进行下一步了。

  1. 初始化脚本
    使用MariaDB自带的脚本,对MariaDB进行初始化(当前在MariaDB安装目录内,即:/usr/local/mysql内):
scripts/mysql_install_db --user=mysql --datadir=/mydata/data

1
3. 设置参数
初始化完成后,需要设置my.cnf文件,早期版本的MySQL和MariaDB都有提供my.cnf为模版,现在已经没有提供,需要手动创建,我们使用vim手动创建到/etc下。

vim /etc/my.cnf

我的配置文件参考(更多参数,可以看官方文档):
1

Begin /etc/mysql/my.cnf

The following options will be passed to all MySQL clients

[client]
port = 3306
socket = /tmp/mysql.sock

The MySQL serve

[mysqld]
port = 3306
socket = /tmp/mysql.sock

MariaDB安装地址

basedir = /usr/local/mysql
datadir = /mydata/data
#skip-external-locking
key_buffer_size = 16M
max_allowed_packet = 1M
sort_buffer_size = 512K
net_buffer_length = 16K
myisam_sort_buffer_size = 8M
skip-name-resolve = 0

  1. 注册服务和环境变量
    之后,我们需要注册为系统服务,一来方便启动MariaDB,二来方便开机自启;这里使用systemctl作为服务,非service:
    注册为服务,我们创建一个服务器文件:
vim /usr/lib/systemd/system/mysql.service

添加内容:

[Unit]
Description=MariaDB

[Service]
LimitNOFILE=10000
Type=simple
User=mysql
Group=mysql
PIDFile=/mydata/data/microServer.pid
ExecStart=/usr/local/mysql/bin/mysqld_safe --datadir=/mydata/data
ExecStop=/bin/kill -9 $MAINPID

[Install]
WantedBy=multi-user.target

设置好后,使用systemctl进行启动即可:

重载systemctl-> 使mysql.service生效

systemctl daemon-reload

启动mysql.server

systemctl start mysql.service

还要添加MariaDB安装目录下的bin目录到环境变量内,如:

PATH=/usr/local/mysql/bin:$PATH

1
5. 设置root用户
设置root用户和允许远程登录,使用MariaDB自带的帮助脚本:

进入MariaDB安装目录下的bin文件夹

cd /usr/local/mysql/bin

运行帮助脚本

./mariadb-secure-installation

运行脚本后,会设置root用户的密码、是否运行远程登、是否删除测试表等选项。

注意⚠️
完成上诉步骤后,其实MariaDB就可以使用了,但是我们需要设置账号,用来远程访问。默认是不允许root用户远程访问的
如果需要root用户远程登录,还需要进入MariaDB的交互模式,输入:

use mysql
grant all privileges on *.* to 'root'@'%' identified by '设置的root用户密码' with grant option;
flush privileges;

防火墙问题:
查看防火墙状态
iptables -L
service iptables status
service iptables start 启动
vim /etc/sysconfig/iptables 防火墙端口是否添加3306

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值