544天 路飞

突如其来的装逼让我无法呼吸

CentOS7环境中源码编译安装MariaDB_10.0.38

发布于 1年前 / 1.5k 次围观 / 0 条评论 / 教程 / 路飞

先来看废话

      MariaDB是MySQL的一个开源分支,主要是社区在维护,并且完全兼容MySQL,并且可以很方便的称为MySQL的替代,MariaDB的诞生正是出自MySQL创始人Michael Widenius之手,命名的来源是他女儿的名字Maria,因为之前他把MySQL卖给sun公司,而sun又被oracle收购,所以MySQL也属于oracle所有,因此存在闭源的风险;而Michael Widenius开发的MariaDB作为MySQL的开源分支,很好的避免的这个潜在的问题,所以MariaDB成为了MySQL未来的替代,很多厂商也越来越关注MariaDB,并且MariaDB在很多方面的性能也要强过MySQL,像目前Windows桌面的php集成开发环境比如xampp还有linux和lnmp环境都采用MariaDB作为默认的数据库,所以从MySQL转向MariaDB也是一种趋势

以上说那么多,使用MariaDB的第一步是要部署在操作系统,现在开始在Linux上用编译源码的方式来安装MariaDB

首先去MariaDB官网下载安装包:https://downloads.mariadb.org/

因为这里是编译安装,所以暂时不针对某一系统的二进制包进行下载,这里下载源码包mariadb-10.0.38.tar.gz,下载之后上传至服务器自定位置。

安装MariaDB之前,首先要安装cmake,另外为了保证不缺依赖,使用yum或者rpm安装依赖:readline-devel,zlib-devel,openssl-devel,libaio-devel并且readline-devel依赖于ncurses-devel,如果使用yum的话会自动将所需依赖安装好,具体命令如下:

yum -y install readline-devel
yum -y install zlib-devel
yum -y install cmake
yum -y install gcc-c++
yum -y install openssl-devel
yum -y install libaio-devel
嫌麻烦可以输下面一条,一样的效果
yum install cmake readline-devel zlib-devel openssl-devel libaio-devel -y

这里提前预定mysql的安装目录为/usr/local/mysql并且数据目录为/data1/mysql,这里要建立用户和目录,并且赋予mysql用户权限,操作如下:

groupadd -r mysql
useradd -g mysql -s /sbin/nologin mysql
mkdir /usr/local/mysql
mkdir -p /data1/mysql
chown -R mysql:mysql /data1/mysql/

现在可以开始安装了,解压安装包,并进入目录:

tar -xvzf mariadb-10.0.38.tar.gz
cd mariadb-10.0.38/

执行编译安装:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data1/mysql -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STPRAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWIYH_READLINE=1 -DWIYH_SSL=system -DVITH_ZLIB=system -DWITH_LOBWRAP=0 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

这里说明一下:-DCMAKE_INSTALL_PREFIX是指定安装的位置,这里是/usr/local/mysql,-DMYSQL_DATADIR是指定MySQL的数据目录,这里是/data1/mysql,安装目录和数据目录都可以自定义设置,-DSYSCONFDIR是指定配置文件所在的目录,一般都是/etc ,具体的配置文件是/etc/my.cnf,-DWITHOUT_TOKUDB=1这个参数一般都要设置上,表示不安装tokudb引擎,tokudb是MySQL中一款开源的存储引擎,可以管理大量数据并且有一些新的特性,这些是Innodb所不具备的,这里之所以不安装,是因为一般计算机默认是没有Percona Server的,并且加载tokudb还要依赖jemalloc内存优化,一般开发中也是不用tokudb的,所以暂时屏蔽掉,否则在系统中找不到依赖会出现:CMake Error at storage/tokudb/PerconaFT/cmake_modules/TokuSetupCompiler.cmake:179 (message)这样的错误,然后后面那些参数都是可选的,可以加也可以不加,最后的编码建议设置一下,所以编译指令也可以简化成下面这样:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data1/mysql -DSYSCONFDIR=/etc -DWITHOUT_TOKUDB=1 -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci

注意:如果万一执行中有了错误,可以执行:

rm -f CMakeCache.txt

删除编译缓存,让指令重新执行,否则每次读取这个文件,命令修改正确也是报错。

上一步的编译完成之后,就可以编译并且安装了:

make && make install

(等待一段时间……)

执行完成之后,进入mysql安装目录分别执行下面命令:

cd /usr/local/mysql/
chown -R mysql:mysql .
scripts/mysql_install_db --datadir=/data1/mysql --user=mysql
chown -R root .
cp support-files/mysql.server /etc/init.d/mysqld

并且根据需要还可以将mysqld添加至系统服务:

chkconfig --add mysqld   # 添加至系统服务
chkconfig mysqld on    # 设置开机自启动

现在如果启动可能会报错,原因是日志目录没有建立,默认是/var/log/mariadb/mariadb.log,后来也可以修改,现在执行:

mkdir /var/log/mariadb
mkdir /var/run/mariadb
chown -R mysql:mysql /var/log/mariadb
chown -R mysql:mysql /var/run/mariadb

建立日志、pid目录:

vi /etc/my.cnf

将 datadir= 改成 datadir=/data1/mysql 然后执行:

/etc/init.d/mysqld start
或 systemctl start mysqld.service
或 service mysqld restart
启动mysql服务

启动服务后,还不能马上进入mysql shell界面,原因是刚才编译时执行本地socket为:/tmp/mysql.sock但是查看/etc/my.cnf中配置的位置却是:/var/lib/mysql/mysql.sock,现在执行命令:

 ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock 

建立软链接即可。

现在可以执行:

./bin/mysql

直接进入MariaDB交互式界面了,默认root用户密码为空。

最后

根据需求可以添加环境变量

> 打开并新建文件
[root@localhost mysql]# vi /etc/profile.d/mysql.sh
#输入以下内容
export PATH=$PATH:/usr/local/mysql/bin/ 
#保存并退出:wq 为脚本赋于可执行权限
[root@localhost mysql]# chmod 777 /etc/profile.d/mysql.sh 
#进行mysql.sh脚本所在目录, 并执行脚本, 以立即生效环境变量
[root@localhost mysql]# source /etc/profile.d/mysql.sh

最后的最后

初始化MariaDB

mysql_secure_installation
-----------------------------
Enter current password for root (enter for none):     
输入当前root密码(没有输入)
Set root password? [Y/n]     
设置root密码?(是/否)
New password:
输入新root密码
Re-enter new password: 
 确认输入root密码
Password updated successfully!         密码更新成功By default, a MariaDB installation has an anonymous user, allowing anyoneto log into MariaDB without having to have a user account created forthem.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a production environment.
默认情况下,MariaDB安装有一个匿名用户,
允许任何人登录MariaDB而他们无需创建用户帐户。
这个目的是只用于测试,安装去更平缓一些。
你应该进入前删除它们生产环境。
Remove anonymous users? [Y/n]
删除匿名用户?(是/否)
Normally, root should only be allowed to connect from 'localhost'.  Thisensures that someone cannot guess at the root password from the network.
通常情况下,root只应允许从localhost连接。
这确保其他用户无法从网络猜测root密码。
Disallow root login remotely? [Y/n]  
不允许root登录远程?(是/否)By default, MariaDB comes with a database named 'test' that anyone canaccess.  This is also intended only for testing, and should be removed
before moving into a production environment.
默认情况下,MariaDB提供了一个名为“测试”的数据库,任何人都可以访问。
这也只用于测试,在进入生产环境之前应该被删除。
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
重新加载权限表将确保所有到目前为止所做的更改将立即生效。
Reload privilege tables now? [Y/n]
现在重新加载权限表(是/否)
All done!  If you've completed all of the above steps, your MariaDBinstallation should now be secure.
全部完成!如果你已经完成了以上步骤,MariaDB安装现在应该安全。
Thanks for using MariaDB!
感谢使用MariaDB!

到这里MariaDB的编译安装过程就全部安装完成了。

未显示?请点击刷新