目录
11.修改data目录下的server-key.pem文件权限
MySQL数据库架构
原图地址:
MySQL架构https://www.processon.com/view/61aeba735653bb080717797d?fromnew=1#pc
1.创建目录
mkdir -p /data/mysql/3306/{data,tmp,binlog,logs}
查看目录结构
tree -L 2 /data/mysql/
2.解压mysql-5.7.27.tar.gz源码包
cd /tmp/
mkdir 3306
tar xf mysql-5.7.27.tar.gz -C /tmp/3306/
3.安装依赖
yum -y install ncurses ncurses-devel bison cmake gcc gcc-c++
4.创建MySQL组和用户
groupadd mysql
useradd mysql -s /sbin/nologin -M -g mysql
说明:
-s /sbin/nologin 用户不能登录系统
-M 不创建用户的HOME目录
-g 指定用户登录组的GID或组名
5.cmake配置编译参数
cd /tmp/3306/mysql-5.7.27
cmake . -DCMAKE_INSTALL_PREFIX=/data/mysql/3306\
-DMYSQL_DATADIR=/data/mysql/3306/data \
-DMYSQL_UNIX_ADDR=/data/mysql/3306/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0 \
-DWITH_BOOST=/usr/local/boost
编译常见参数选项说明:
-DCMAKE_INSTALL_PREFIX=/data/mysql/3306 | 设定mysql安装目录 |
-DMYSQL_DATADIR=/data/mysql/3306/data | 设定mysql数据文件目录 |
-DMYSQL_UNIX_ADDR=/data/mysql/3306/tmp/mysql.sock | 设定mysql.sock路径 |
-DDEFAULT_CHARSET=utf8 | 设定默认的字符集为utf8 |
-DDEFAULT_COLLATION=utf8_general_ci | 设定默认排序规则 |
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii | 启用额外的字符集类型 |
-DENABLED_LOCAL_INFILE=ON | 启用本地数据导入支持 |
-DWITH_INNOBASE_STORAGE_ENGINE=1 | 启用存储引擎 |
-DWITH_<ENGINE>_STORAGEENGINE=1 | 启用某个引擎的支持 |
-DWITHOUT<ENGINE>_STORAGE_ENGINE=0 | 禁用某个引擎的支持 |
-DWITH_FEDERATED_STORAGE_ENGINE=1 | 启用存储引擎 |
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 | 启用存储引擎 |
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 | 启用存储引擎 |
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 | 启用存储引擎 |
-DWITH_ZLIB=bundled | 启用zlib库支持 |
-DWITH_EMBEDDED_SERVER=1 | 编译嵌入式服务器支持 |
-DWITH_DEBUG=0 | 禁用debug(默认为禁用) |
-DWITH_BOOST=/usr/local/boost | 启用boost库支持,MySQL 5.7版本编译安装需要依赖boost库 |
6.开始编译安装
make install
7.更改MySQL安装目录的属主和属组
chown -R mysql:mysql /data/mysql/3306/
cp /etc/my.cnf.bak /data/mysql/3306/my3306.cnf
chown mysql:mysql /data/mysql/3306/my3306.cnf
8.修改MySQL配置文件
vi /data/mysql/3306/my3306.cnf
[client]
port = 3306
socket = /data/mysql/3306/tmp/mysql.sock
default-character-set = utf8
[mysqld]
port = 3306
user = mysql
basedir = /data/mysql/3306
datadir = /data/mysql/3306/data
pid-file = /data/mysql/3306/mysqld.pid
socket = /data/mysql/3306/tmp/mysql.sock
tmpdir = /data/mysql/3306/tmp
character_set_server = utf8
server-id = 1
max_connections = 100
max_connect_errors = 10
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
#log-bin = /data/mysql/3306/binlog/mysql-bin
relay-log = /data/mysql/3306/binlog/relay-bin
log-error = /data/mysql/3306/logs/mysql_5_7_27.err
9.初始化数据库
cd /data/mysql/3306/
./bin/mysqld --initialize-insecure --user=mysql --basedir=/data/mysql/3306 --datadir=/data/mysql/3306/data --socket=/data/mysql/3306/tmp/mysql.sock
提示:
#生成初始化密码参数(5.7版本才有),必须要添加,否则会初始化失败,会生成空密码
-initialize-insecure
#设定初始化用户
--user=mysql
#设定mysql工作目录
--basedir=/data/mysql/3306
#设定数据文件目录
--datadir=/data/mysql/3306/data
10.实例开启SSL连接
cd /data/mysql/3306/
./bin/mysql_ssl_rsa_setup --initialize-insecure --user=mysql --basedir=/data/mysql/3306 --datadir=/data/mysql/3306/data
11.修改data目录下的server-key.pem文件权限
cd /data/mysql/3306/data/
chmod +r server-key.pem
ls -l server-key.pem
提示:
如果不给文件server-key.pem其他用户和组可读权限的话,当启动数据库的时候,会报如下错误
[ERROR] SSL error: Unable to get private key from 'server-key.pem'
[Warning] Failed to set up SSL because of the following SSL library error: Unable to get private key
12.启动MySQL数据库
/data/mysql/3306/bin/mysqld_safe --defaults-file=/data/mysql/3306/my3306.cnf 2>&1 > /dev/null &
注意:如果有报错的解决方法
touch /data/mysql/3306/logs/mysql_5_7_27.err
chown -R mysql:mysql /data/mysql/3306/logs/mysql_5_7_27.err
13.更改root密码
/data/mysql/3306/bin/mysqladmin -u root -S /data/mysql/3306/tmp/mysql.sock -p 密码
14.登录和优雅关闭3306的实例
#登录3306实例
/data/mysql/3306/bin/mysql -u root -S /data/mysql/3306/tmp/mysql.sock -p
#优雅关闭数据库
/data/mysql/3306/bin/mysqladmin –u用户名 –p密码 shutdown