预备知识:
MySQL/MariaDB的源码编译需要借助于:cmake:
cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在另一个指定的目录中
而非源码目录中进行,这可以保证源码目录不受任何一次编译的影响,因此在同一个源码树上可以进行多次
不同的编译,如针对于不同平台编译。
cmake基础简介:
使用cmake编译mariadb-5.5
cmake指定编译选项的方式不同于make,其实现方式对比如下:
./configure cmake .
./configure --help cmake . -LH or ccmake .
指定安装文件的安装路径时常用的选项:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DMYSQL_DATADIR=/data/mysql
-DSYSCONFDIR=/etc
默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_FEDERATED_STORAGE_ENGINE=1
若要明确指定不编译某存储引擎,可以使用类似如下的选项:
-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
比如:
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
-DWITHOUT_FEDERATED_STORAGE_ENGINE=1
-DWITHOUT_PARTITION_STORAGE_ENGINE=1
如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:
-DWITH_READLINE=1
-DWITH_SSL=system
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0
其它常用的选项:
-DMYSQL_TCP_PORT=3306
-DMYSQL_UNIX_ADDR=/tmp/mysql.sock
-DENABLED_LOCAL_INFILE=1
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_DEBUG=0
-DENABLE_PROFILING=1
如果想清理此前的编译所生成的文件,则需要使用如下命令:
make clean
rm CMakeCache.txt
#######################################################################
OK,现在正式开始
#######################################################################
1、安装依赖包:
#jemalloc-devel 在epel源中,其他的都在base源中已提供;
# cmake也可以使用源码进行编译安装:
cmake是一个跨平台编译器:
2、安装开发环境:
# yum groupinstall "Development Tools" "Server Platform Development"
新添磁盘,建立LVM作为mysql的数据目录:
|
Disk /dev/sdb : 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical /physical ): 512 bytes / 512 bytes
I /O size (minimum /optimal ): 512 bytes / 512 bytes
Disk label type : dos
Disk identifier: 0x6e65abc7
Device Boot Start End Blocks Id System
/dev/sdb1 2048 41945087 20971520 8e Linux LVM
|
#######################################################################
#创建逻辑卷:
#格式化逻辑卷:
#在fstab文件中添加为开机自动挂载:
/dev/mapper/centos-root / xfs defaults 0 0
UUID=daffae2e-9598-4d9c-807e-c47a2d07d96a /boot xfs defaults 0 0
/dev/mapper/centos-home /home xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/myvg/mydata /mydata/data ext4 defaults 0 0
|
######################################################################
3、编译安装MariaDB:
uid=306(mysql) gid=306(mysql) groups =306(mysql)
|
4、初始化数据库:
5、提供脚本:
6、提供配置文件:
thread_concurrency = 4
datadir = /mydata/data
innodb_file_per_table = ON
skip_name_resolve = ON
|
7、提供二进制文件,库文件,头文件,man手册:
提供二进制文件:
提供库文件:
提供头文件:
提供man手册:
8、启动mysql服务,连接MariaDB:
[root@localhost ~]
LISTEN 0 50 *:3306 *:*
|
初始化MariaDB:
1、初始化第一个操作:
配置文件my.cnf
集中式的配置:多个应用程序共用的配置文件:
[mysqld]
[mysqld_safe]
[clent]
# mysqld --help --verbose | head -20
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
# 此处说明了,mysql配置文件的加载顺序;
使用配置文件的方式:
(1)它一次查找每个需要查找的文件,结果是所有文件的并集;
(2)如果某参数在多个文件中出现多次,后读取的最终生效;
# /usr/local/mysql/bin/mysqld --help --verbose
(1)显示mysqld程序启动时可用的选项,通常都是长选项;
(2)显示mysqld的配置文件中可用的服务变量;
mysql> SHOW GLOBAL VARIABLES;
msyql> SHOW SESSION VARIABLES;
2、初始化第二个操作:
#查看已存在的所有用户:
mysql> SELECT Host,User,Password FROM mysql.user;
(1)删除所用匿名用户:
mysql> DROP USER ''@'localhost';
mysql> DROP USER ''@'localhost.localdomain';
mysql> DROP USER ''@'127.0.0.1';
(2)给所有的root用户设定密码:
第一种方式:
mysql> SET PASSWORD FOR root@127.0.0.1 = PASSWORD('kalaguiyin');
第二种方式:
mysql> USE mysql;
mysql> UPDATE user SET PASSWORD = PASSWORD('kalaguiyin') WHERE user = 'root';
mysql> FLUSH PRIVILEGES;
第三种方式:
# mysqladmin -uroot -hlocalhost password 'kalaguiyin' -p
#按提示输入密码即可修改成功;-h 可用指定远程服务器的IP地址;
# mysqladmin -uroot -hlocalhost -p flush-privileges;
OK,此时使用mysql命令再次登录数据库时,就需要登录密码了:
例如:# mysql -h127.0.0.1 -uroot -p
学习过程中的记录,请各位高手指下留情!
补充:
补充,在CentOS 7 上已经不习惯使用service mysqld start的方式来启动服务:
故使用systemctl方式启动:
[Unit]
Description=MariaDB database server
After=syslog.target
After=network.target
[Service]
Type=simple
User=mysql
Group=mysql
ExecStart= /usr/local/mysql/bin/mysqld_safe --basedir= /usr/local/mysql
TimeoutSec=300
PrivateTmp= false
[Install]
WantedBy=multi-user.target
|
#此时便可以使用systemctl管理mysqld服务了:
[root@localhost systemd]
[root@localhost systemd]
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::443 :::*
[root@localhost systemd]
[root@localhost systemd]
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::80 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::443 :::*
|
本文由 CentOS中文站 - 专注Linux技术 作者:centos 发表,其版权均为 CentOS中文站 - 专注Linux技术 所有,文章内容系作者个人观点,不代表 CentOS中文站 - 专注Linux技术 对观点赞同或支持。如需转载,请注明文章来源。