这篇博客笔记主要是讲MySQL的安装,其中包括源码编译安装,二进制程序安装以及yum多实例安装(yum安装省略)
一、源码编译安装mariadb:
1、 工具包安装(mariadb安装环境)
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
2、 做准备用户和数据目录
mkdir /data
useradd -r -s /sbin/nologin -d /data/mysqldb -m mysql
tar -xvf mariadb-10.2.15.tar.gz
3、 cmake 编译安装:
cmake的重要特性之一是其独立于源码(out-of-source)的编译功能,即编译工作可以在
另一个指定的目录中而非源码目录中进行,这可以保证源码目录不受任何一次编译的影
响,因此在同一个源码树上可以进行多次不同的编译,如针对于不同平台编译
进入解压的源码包文件夹下: cd mariadb-10.2.15/
复制如下代码并执行:
cmake \
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysqldb \
-DMYSQL_UNIX_ADDR=/app/mysql/data/mysql.sock \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_TCP_PORT=3306 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DMYSQL_USER=mysql \
-DWITH_DEBUG=0
编译参数说明
cmake \
-DCMAKE_INSTALL_PREFIX=/app/mysql \ #安装的根目录
-DMYSQL_DATADIR=/data/mysqldb \ #数据存放目录
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \ #UNIX socket文件
-DENABLED_LOCAL_INFILE=1 \ #启用加载本地数据
-DWITH_INNOBASE_STORAGE_ENGINE=1 \ #支持InnoDB引擎
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \ #支持ARCHIVE引擎
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ #支持BLACKHOLE引擎
-DWITH_FEDERATED_STORAGE_ENGINE=1 \ #支持FEDERATED引擎
-DWITH_EXAMPLE_STORAGE_ENGINE=1 \ #支持EXAMPLE引擎
-DWITH_PARTITION_STORAGE_ENGINE=1 \ #支持PARTITION引擎
-DWITH_MYISAM_STORAGE_ENGINE=1 \ #支持MYISAM引擎
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ #支持PERFSCHEMA引擎
-DMYSQL_TCP_PORT=3306 \ #对外开放的默认端口
-DEXTRA_CHARSETS=all \ #支持所有扩展字符支持
-DDEFAULT_CHARSET=utf8 \ #默认字符集为utf8 latin
-DDEFAULT_COLLATION=utf8_general_ci \ #默认字符校对utf8
-DMYSQL_USER=mysql \ #指定mysql启动用户
-DWITH_DEBUG=0 #调试模式
执行完后开始进行编译安装,执行如下命令:
make && make install(可指定cpu核心数 -j [number])
提示:如果出错,执行rm -f CMakeCache.txt
4、准备环境变量
echo 'PATH=/data/mysql/bin:$PATH' >/etc/profile.d/mysql.sh
重新执行刚修改的初始化文件,使之立即生效 :
. /etc/profile.d/mysql.sh(或者source)
5、生成数据库文件
cd /app/mysql/
scripts/mysql_install_db --datadir=/data/mysqldb/ --user=mysql
6、准备配置文件
cp /data/mysql/support-files/my-huge.cnf /etc/my.cnf
7、准备启动脚本
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
8、启动服务
chkconfig --add mysqld ;service mysqld start
二、通用二进制格式安装
- 注意:这种方法安装我们采用LVM逻辑卷来安装
1、数据库存放的空间,逻辑卷
fdisk /dev/sda
partprobe
pvcreate /dev/sda6
vgcreate vg0 /dev/sda6
lvcreate -n mysql -l +100%FREE vg0
mkfs.xfs /dev/vg0/mysql
将上面创建的逻辑卷进行挂载,并设置开机自动挂载
mkdir /data
mount /dev/vg0/mysql /data
vim /etc/fstab
2 创建mysql系统用户
useradd -r -s /sbin/nologin -d /data/mysql -m mysql
3 二进制程序存放对应路径
tar xvf mariadb-10.2.16-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local/
-
在当前目录下创建软连接mysql
ln -s mariadb-10.2.16-linux-x86_64/ mysql
-
更改所属组为mysql
chown -R root.mysql /usr/local/mysql/
4 PATH变量
vim /etc/profile.d/mysql.sh
PATH=/usr/local/mysql/bin:$PATH
. /etc/profile.d/mysql.sh
5 创建数据库相关数据文件(初始化数据库)
cd /usr/local/mysql/
scripts/mysql_install_db --datadir=/data/mysql --user=mysql
6 准备Mysql配置文件
cp /usr/local/mysql/support-files/my-huge.cnf /etc/my.cnf
vim /etc/my.cnf
datadir=/data/mysql
7 准备启动脚本
chkconfig --list
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list
service mysqld start
8 启动脚本进行安全加固
mysql_secure_installation
至此mariadb已经安装完毕。
三、MySQL多实例安装(yum)
1、创建mysql相关目录
mkdir /mysqldb/{3306,3307,3308}/{etc,bin,data,pid,socket,log} -pv
2、yum安装MariaDB-server
yum install mariadb-server
3、更改目录所属权限
chown -R mysql.mysql /mysqldb/
4 、生成数据库文件
mysql_install_db --datadir=/mysqldb/3306/data --user=mysql
mysql_install_db --datadir=/mysqldb/3307/data --user=mysql
mysql_install_db --datadir=/mysqldb/3308/data --user=mysql
5、准备配置文件
cp /etc/my.cnf /mysqldb/3306/etc/
vim /mysqldb/3306/etc/my.cnf
[mysqld]
port=3306
datadir= /mysqldb/3306/data
socket=/mysqldb/3306/socket/mysql.sock
[mysqld_safe]
log-error=/mysqldb/3306/log/mariadb.log
pid-file=/mysqldb/3306/pid/mariadb.pid
cp /mysqldb/3306/etc/my.cnf /mysqldb/3307/etc/
cp /mysqldb/3306/etc/my.cnf /mysqldb/3308/etc/
sed -i 's/3306/3307/g' /mysqldb/3307/etc/my.cnf
sed -i 's/3306/3308/g' /mysqldb/3308/etc/my.cnf
6、生成启动脚本
cp mysqld /mysqldb/3306/bin/
vim /mysqldb/3306/bin/mysqld
chmod +x /mysqldb/3306/bin/mysqld
- 注意: mysqld脚本是提前写好的,这里提供一个链接供下载使用
https://pan.baidu.com/s/1AI_VZf7vvopfJzvZMpAI2A
7、启动关闭服务
/mysqldb/3306/bin/mysqld start
/mysqldb/3306/bin/mysqld stop
/mysqldb/3306/bin/mysqld restart
- 注意3306、3307、3308启动服务一样
8、指定套接字文件启动不同监听端口的mysql服务
mysql -S /mysqldb/3306/socket/mysql.sock
mysql -S /mysqldb/3307/socket/mysql.sock
mysql -S /mysqldb/3308/socket/mysql.sock
9、 修改root口令
mysqladmin -S /mysqldb/3306/socket/mysql.sock password 'centos'
- 注意:由于执行脚本里加上了密码(centos),所以如果不执行修改root口令则启动stop时会报错
- 3307、3308修改口令同上