编译安装自定义目录MySQL5.7
程序员文章站
2022-06-21 21:00:03
...
1. 构建环境
2. 安装FPM
3. 编译安装
4. 打包前准备
vi /data/rpms/mysql-5.7.20/opt/swancmp/mysql/my.cnf
vi /opt/before_install.sh
vi /opt/after_install.sh
vi /opt/before_remove.sh
vi /opt/after_remove.sh
4. 打包
启动MySQL
[root@localhost ~]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
查看日志
查找初始root密码
登录
yum -y groupinstall "Development Tools" yum -y install ruby ruby-devel rubygems gcc openssl-devel
2. 安装FPM
gem sources --add http://mirrors.aliyun.com/rubygems/ --remove http://rubygems.org/ gem install arr-pm fpm
3. 编译安装
yum install libaio-devel ncurses-devel libgcrypt perl make cmake gcc gcc-c++ bison -y mkdir -p /data/{download,rpms/mysql-5.7.20} cd /data/download tar zxf mysql-5.7.20.tar.gz tar zxf boost_1_59_0.tar.gz cd mysql-5.7.20 export DIR_SRC_INSTALL=/data/rpms/mysql-5.7.20 export DIR_SRC_BOOST=/data/download/boost_1_59_0 export DIR_RPM_INSTALL=/opt/swancmp/mysql export DIR_RPM_DATA=/opt/swancmp/mysql/mysql export LDFLAGS="-Wl,-rpath=${DIR_PY_RPM_INSTALL}/lib ${LDFLAGS}" groupadd -g 27 -o -r mysql >/dev/null 2>&1 || : useradd -M -N -g mysql -o -r -d ${DIR_RPM_DATA} -s /bin/false -c "MySQL Server" -u 27 mysql >/dev/null 2>&1 || : mkdir -p /opt/swancmp/mysql/{mysql,log,tmp} chown -R mysql:mysql /opt/swancmp/mysql/mysql/ cmake -DCMAKE_INSTALL_PREFIX=${DIR_RPM_INSTALL} \ -DMYSQL_DATADIR=${DIR_RPM_DATA} \ -DWITH_BOOST=${DIR_SRC_BOOST} \ -DSYSCONFDIR=${DIR_RPM_INSTALL} \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_FEDERATED_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLE_DTRACE=0 \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_bin \ -DWITH_EMBEDDED_SERVER=1 make make install DESTDIR=${DIR_SRC_INSTALL}
4. 打包前准备
vi /data/rpms/mysql-5.7.20/opt/swancmp/mysql/my.cnf
[client] default-character-set=utf8 # For advice on how to change settings please see # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html [mysqld] character-set-server=utf8 # # Remove leading # and set to the amount of RAM for the most important data # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%. # innodb_buffer_pool_size = 128M # # Remove leading # to turn on a very important data integrity option: logging # changes to the binary log between backups. # log_bin # # Remove leading # to set options mainly useful for reporting servers. # The server defaults are faster for transactions and fast SELECTs. # Adjust sizes as needed, experiment to find the optimal values. # join_buffer_size = 128M # sort_buffer_size = 2M # read_rnd_buffer_size = 2M basedir=/opt/swancmp/mysql datadir=/opt/swancmp/mysql/mysql tmpdir=/opt/swancmp/mysql/tmp socket=/tmp/mysql.sock port=3307 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 log-error=/opt/swancmp/mysql/log/mysqld.log pid-file=/opt/swancmp/mysql/run/mysqld/mysqld.pid # validate_password = off,取消MySQL强制密码规则校验设置 validate_password=off max_connections=32000
vi /opt/before_install.sh
#!/bin/bash groupadd -g 27 -o -r mysql >/dev/null 2>&1 || : useradd -M -N -g mysql -o -r -d /opt/swancmp/mysql/mysql -s /bin/false -c "MySQL Server" -u 27 mysql >/dev/null 2>&1 || :
vi /opt/after_install.sh
#!/bin/bash mkdir -p /opt/swancmp/mysql/{log,run/mysqld,mysql,tmp} >/dev/null 2>&1 || : /bin/touch /opt/swancmp/mysql/log/mysqld.log >/dev/null 2>&1 || : /bin/chown mysql:mysql -R /opt/swancmp/mysql/log/mysqld.log >/dev/null 2>&1 || : /bin/chown mysql:mysql -R /opt/swancmp/mysql/run/mysqld >/dev/null 2>&1 || : /bin/chown mysql:mysql -R /opt/swancmp/mysql/tmp >/dev/null 2>&1 || : /bin/chown mysql:mysql -R /opt/swancmp/mysql/mysql >/dev/null 2>&1 || : cp /opt/swancmp/mysql/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig --add mysqld >/dev/null 2>&1 || : chkconfig mysqld on >/dev/null 2>&1 || : # cp /opt/swancmp/mysql/support-files/my.cnf /etc/my.cnf /opt/swancmp/mysql/bin/mysqld --initialize --user=mysql --basedir=/opt/swancmp/mysql/ --datadir=/opt/swancmp/mysql/mysql >/dev/null 2>&1
vi /opt/before_remove.sh
#!/bin/bash /etc/init.d/mysqld stop >/dev/null 2>&1 || :
vi /opt/after_remove.sh
#!/bin/bash mv /opt/swancmp/mysql/mysql /opt/swancmp/mysql/mysql-$(date +%Y$m%d%H%M%S) rm -rf /opt/swancmp/mysql/log rm -rf /opt/swancmp/mysql/run rm -rf /opt/swancmp/mysql/tmp
4. 打包
# mkdir -p /data/rpms/mysql-5.7.20 # cp -rf /data/download/mysql-5.7.20/opt /data/rpms/mysql-5.7.20 fpm -s dir -t rpm -p $(pwd) -n swancmp-mysql -v '5.7.20' \ -C ${DIR_SRC_INSTALL} \ --directories=${DIR_RPM_INSTALL}/bin \ --directories=${DIR_RPM_INSTALL}/lib \ --directories=${DIR_RPM_INSTALL}/docs \ --directories=${DIR_RPM_INSTALL}/include \ --directories=${DIR_RPM_INSTALL}/man \ --directories=${DIR_RPM_INSTALL}/mysql-test \ --directories=${DIR_RPM_INSTALL}/share \ --directories=${DIR_RPM_INSTALL}/support-files \ --directories=${DIR_RPM_INSTALL}/my.cnf \ --directories=${DIR_RPM_INSTALL}/COPYING \ --directories=${DIR_RPM_INSTALL}/COPYING-test \ --directories=${DIR_RPM_INSTALL}/README \ --directories=${DIR_RPM_INSTALL}/README-test \ --config-files=${DIR_RPM_INSTALL}/my.cnf \ --category=Applications/Databases \ --url 'https://dev.mysql.com/doc/refman/5.7/en/' \ --description 'mysql-5.7.20' \ --vendor 'www.asiacom.net.cn' \ --license 'GPL' \ --iteration 1.el7 \ --conflicts 'mariadb-libs' \ --depends '/usr/bin/perl net-tools perl(Getopt::Long) perl(strict)' \ --before-install /opt/before_install.sh \ --after-install /opt/after_install.sh \ --before-remove /opt/before_remove.sh \ --after-remove /opt/after_remove.sh \ -m "zhangliqiang@asiacom.net.cn"
启动MySQL
[root@localhost ~]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!
查看日志
[root@localhost ~]# cat /opt/swancmp/mysql/log/mysqld.log 2018-12-26T12:13:50.314830Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2018-12-26T12:13:50.877718Z 0 [Warning] InnoDB: New log files created, LSN=45790 2018-12-26T12:13:50.953826Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2018-12-26T12:13:51.019086Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: b48ed1b8-0907-11e9-8d25-080027f2328b. 2018-12-26T12:13:51.021745Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2018-12-26T12:13:51.023048Z 1 [Note] A temporary password is generated for root@localhost: wAB>te)Uc1Li 2018-12-26T12:14:15.403027Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2018-12-26T12:14:15.403113Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled 2018-12-26T12:14:15.403146Z 0 [Note] /opt/swancmp/mysql/bin/mysqld (mysqld 5.7.20) starting as process 21788 ... 2018-12-26T12:14:15.410581Z 0 [Note] InnoDB: PUNCH HOLE support available 2018-12-26T12:14:15.410631Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2018-12-26T12:14:15.410638Z 0 [Note] InnoDB: Uses event mutexes 2018-12-26T12:14:15.410642Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier 2018-12-26T12:14:15.410646Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3 2018-12-26T12:14:15.410650Z 0 [Note] InnoDB: Using Linux native AIO 2018-12-26T12:14:15.423683Z 0 [Note] InnoDB: Number of pools: 1 2018-12-26T12:14:15.423813Z 0 [Note] InnoDB: Using CPU crc32 instructions 2018-12-26T12:14:15.425086Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M 2018-12-26T12:14:15.431601Z 0 [Note] InnoDB: Completed initialization of buffer pool 2018-12-26T12:14:15.436539Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). 2018-12-26T12:14:15.445463Z 0 [Note] InnoDB: Highest supported file format is Barracuda. 2018-12-26T12:14:15.462798Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables 2018-12-26T12:14:15.462991Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... 2018-12-26T12:14:15.506295Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. 2018-12-26T12:14:15.508558Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active. 2018-12-26T12:14:15.508591Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active. 2018-12-26T12:14:15.509055Z 0 [Note] InnoDB: Waiting for purge to start 2018-12-26T12:14:15.559527Z 0 [Note] InnoDB: 5.7.20 started; log sequence number 2565377 2018-12-26T12:14:15.560300Z 0 [Note] Plugin 'FEDERATED' is disabled. 2018-12-26T12:14:15.566989Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key 2018-12-26T12:14:15.567015Z 0 [Note] Server hostname (bind-address): '*'; port: 3307 2018-12-26T12:14:15.567622Z 0 [Note] IPv6 is available. 2018-12-26T12:14:15.567640Z 0 [Note] - '::' resolves to '::'; 2018-12-26T12:14:15.567663Z 0 [Note] Server socket created on IP: '::'. 2018-12-26T12:14:15.568357Z 0 [Note] InnoDB: Loading buffer pool(s) from /opt/swancmp/mysql/mysql/ib_buffer_pool 2018-12-26T12:14:15.569776Z 0 [Note] InnoDB: Buffer pool(s) load completed at 181226 20:14:15 2018-12-26T12:14:15.587853Z 0 [Note] Event Scheduler: Loaded 0 events 2018-12-26T12:14:15.588146Z 0 [Note] /opt/swancmp/mysql/bin/mysqld: ready for connections. Version: '5.7.20' socket: '/tmp/mysql.sock' port: 3307 Source distribution 2018-12-26T12:14:15.588163Z 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check. 2018-12-26T12:14:15.588183Z 0 [Note] Beginning of list of non-natively partitioned tables 2018-12-26T12:14:15.598451Z 0 [Note] End of list of non-natively partitioned tables [root@localhost ~]# cat /opt/swancmp/mysql/log/mysqld.log 2018-12-26T12:13:50.314830Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2018-12-26T12:13:50.877718Z 0 [Warning] InnoDB: New log files created, LSN=45790 2018-12-26T12:13:50.953826Z 0 [Warning] InnoDB: Creating foreign key constraint system tables. 2018-12-26T12:13:51.019086Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: b48ed1b8-0907-11e9-8d25-080027f2328b. 2018-12-26T12:13:51.021745Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened. 2018-12-26T12:13:51.023048Z 1 [Note] A temporary password is generated for root@localhost: wAB>te)Uc1Li 2018-12-26T12:14:15.403027Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). 2018-12-26T12:14:15.403113Z 0 [Note] --secure-file-priv is set to NULL. Operations related to importing and exporting data are disabled 2018-12-26T12:14:15.403146Z 0 [Note] /opt/swancmp/mysql/bin/mysqld (mysqld 5.7.20) starting as process 21788 ... 2018-12-26T12:14:15.410581Z 0 [Note] InnoDB: PUNCH HOLE support available 2018-12-26T12:14:15.410631Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins 2018-12-26T12:14:15.410638Z 0 [Note] InnoDB: Uses event mutexes 2018-12-26T12:14:15.410642Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier 2018-12-26T12:14:15.410646Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.3 2018-12-26T12:14:15.410650Z 0 [Note] InnoDB: Using Linux native AIO 2018-12-26T12:14:15.423683Z 0 [Note] InnoDB: Number of pools: 1 2018-12-26T12:14:15.423813Z 0 [Note] InnoDB: Using CPU crc32 instructions 2018-12-26T12:14:15.425086Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M 2018-12-26T12:14:15.431601Z 0 [Note] InnoDB: Completed initialization of buffer pool 2018-12-26T12:14:15.436539Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). 2018-12-26T12:14:15.445463Z 0 [Note] InnoDB: Highest supported file format is Barracuda. 2018-12-26T12:14:15.462798Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables 2018-12-26T12:14:15.462991Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... 2018-12-26T12:14:15.506295Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. 2018-12-26T12:14:15.508558Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active. 2018-12-26T12:14:15.508591Z 0 [Note] InnoDB: 32 non-redo rollback segment(s) are active. 2018-12-26T12:14:15.509055Z 0 [Note] InnoDB: Waiting for purge to start 2018-12-26T12:14:15.559527Z 0 [Note] InnoDB: 5.7.20 started; log sequence number 2565377 2018-12-26T12:14:15.560300Z 0 [Note] Plugin 'FEDERATED' is disabled. 2018-12-26T12:14:15.566989Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key 2018-12-26T12:14:15.567015Z 0 [Note] Server hostname (bind-address): '*'; port: 3307 2018-12-26T12:14:15.567622Z 0 [Note] IPv6 is available. 2018-12-26T12:14:15.567640Z 0 [Note] - '::' resolves to '::'; 2018-12-26T12:14:15.567663Z 0 [Note] Server socket created on IP: '::'. 2018-12-26T12:14:15.568357Z 0 [Note] InnoDB: Loading buffer pool(s) from /opt/swancmp/mysql/mysql/ib_buffer_pool 2018-12-26T12:14:15.569776Z 0 [Note] InnoDB: Buffer pool(s) load completed at 181226 20:14:15 2018-12-26T12:14:15.587853Z 0 [Note] Event Scheduler: Loaded 0 events 2018-12-26T12:14:15.588146Z 0 [Note] /opt/swancmp/mysql/bin/mysqld: ready for connections. Version: '5.7.20' socket: '/tmp/mysql.sock' port: 3307 Source distribution 2018-12-26T12:14:15.588163Z 0 [Note] Executing 'SELECT * FROM INFORMATION_SCHEMA.TABLES;' to get a list of tables using the deprecated partition engine. You may use the startup option '--disable-partition-engine-check' to skip this check. 2018-12-26T12:14:15.588183Z 0 [Note] Beginning of list of non-natively partitioned tables 2018-12-26T12:14:15.598451Z 0 [Note] End of list of non-natively partitioned tables
查找初始root密码
[root@localhost mysql]# grep -r 'temporary password' /opt/swancmp/mysql/log/mysqld.log 2018-12-26T12:13:51.023048Z 1 [Note] A temporary password is generated for root@localhost: wAB>te)Uc1Li
登录
[root@localhost mysql]# /opt/swancmp/mysql/bin/mysql -uroot -p'wAB>te)Uc1Li' mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 Server version: 5.7.20 Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>