/usr/local/mysql,數據目錄:/data/mysql/mysql3306rpm -qa | grep -i mariadb # mariadb-libs-5.5.50-1.el7_2.x86_64 # 解決依賴衝突(postfix 依賴 mariadb-libs) rpm -e mariadb-libs-5.5.50-1.el7_2.x86_64 postfix-2:2.10.1-6.el7.x86_64
yum install -y cmake make gcc gcc-c++ ncurses-devel openssl-devel bison libaio libaio-devel
groupadd mysql
useradd -s /bin/bash -m -g mysql mysql
# 數據目錄分層設計
mkdir -p /data/mysql/mysql3306/{bin_log,db_file,innodb_log,innodb_ts,log,relay_log,tmpdir,undo_log}
chown -R mysql:mysql /data/mysql/mysql3306
CMake 參數添加 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz tar -zxvf boost_1_59_0.tar.gz -C /usr/local mv /usr/local/boost_1_59_0 /usr/local/boost cd /usr/local/boost ./bootstrap.sh ./b2 stage threading=multi link=shared ./b2 install threading=multi link=shared
cd /path/to/mysql-5.7.16 cmake \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql/mysql3306/db_file \ -DSYSCONFDIR=/etc \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DDEFAULT_CHARSET=utf8mb4 \ -DDEFAULT_COLLATION=utf8mb4_general_ci \ -DENABLE_DEBUG_SYNC=0 \ -DENABLED_LOCAL_INFILE=1 \ -DENABLED_PROFILING=1 \ -DMYSQL_TCP_PORT=3306 \ -DMYSQL_UNIX_ADDR=/data/mysql/mysql3306/tmpdir/mysql.sock \ -DWITH_DEBUG=0 \ -DWITH_SSL=system \ -DWITH_SAFEMALLOC=OFF \ -DDOWNLOAD_BOOST=1 \ -DWITH_BOOST=/usr/local/boost
# 使用 2 核並行編譯 make -j2 && make install -j2 # 修改安裝目錄權限 chown -R mysql:mysql /usr/local/mysql
# 複製配置模板 cp /usr/local/mysql/support-files/my-default.cnf /etc/my.cnf # 編輯核心參數 vim /etc/my.cnf chown mysql:mysql /etc/my.cnf
[mysqld] basedir=/usr/local/mysql datadir=/data/mysql/mysql3306/db_file socket=/data/mysql/mysql3306/tmpdir/mysql.sock port=3306 pid_file=/data/mysql/mysql3306/log/mysql.pid log_error=/data/mysql/mysql3306/log/error.log slow_query_log_file=/data/mysql/mysql3306/log/slow.log general_log_file=/data/mysql/mysql3306/log/general.log # 目錄分離 log_bin_basename=/data/mysql/mysql3306/bin_log/binlog log_bin_index=/data/mysql/mysql3306/bin_log/binlog.index innodb_log_group_home_dir=/data/mysql/mysql3306/innodb_log innodb_data_home_dir=/data/mysql/mysql3306/innodb_ts innodb_undo_directory=/data/mysql/mysql3306/undo_log relay_log_basename=/data/mysql/mysql3306/relay_log/relay relay_log_index=/data/mysql/mysql3306/relay_log/relay.index tmpdir=/data/mysql/mysql3306/tmpdir # 性能核心 innodb_buffer_pool_size=2G innodb_log_file_size=512M innodb_flush_log_at_trx_commit=1 sync_binlog=1 max_connections=2000 character_set_server=utf8mb4 collation_server=utf8mb4_general_ci sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
cd /usr/local/mysql bin/mysqld --defaults-file=/etc/my.cnf --initialize --basedir=/usr/local/mysql --datadir=/data/mysql/mysql3306/db_file --user=mysql
輸出日誌中包含 root@localhost: 隨機密碼,記錄備用。
# 永久環境變量 echo 'export MYSQL_HOME=/usr/local/mysql' >> /etc/profile echo 'export PATH=$MYSQL_HOME/bin:$PATH' >> /etc/profile source /etc/profile # 啟動服務 mysqld_safe --defaults-file=/etc/my.cnf & # 驗證進程 ps -ef | grep mysql
# 使用隨機密碼登錄 mysql -u root -p -S /data/mysql/mysql3306/tmpdir/mysql.sock # 修改密碼(5.7.6+ 語法) SET PASSWORD = 'NewStrongPass123!'; -- 或 ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
mysqladmin shutdown -u root -p -S /data/mysql/mysql3306/tmpdir/mysql.sock
| 項目 | MySQL 5.6 | MySQL 5.7.6+ |
|---|---|---|
| 初始化工具 | mysql_install_db | mysqld --initialize |
| 初始數據庫 | mysql, information_schema, performance_schema, test | mysql, information_schema, performance_schema, sys |
| 初始用戶 | root@localhost, root@::1, root@hostname, ''@localhost, ''@hostname | mysql.sys, root@localhost |
| Root 初始密碼 | 空 | 隨機生成(initialize)或無(initialize-insecure) |
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld chmod +x /etc/init.d/mysqld chkconfig --add mysqld chkconfig mysqld on