Mysql 5.6.35 原始碼安裝
阿新 • • 發佈:2018-12-31
安裝環境
系統:CenteOS 7.4
安裝過程
刪除已有包
shell> rpm -qa | grep mysql
shell> rpm -e --nodeps xxx(匹配到的mysql名稱)
安裝依賴包
shell> yum install -y wget cmake gcc* c++* autoconf automake
shell> yum install -y zlib* libxml* ncurses-devel libmcrypt* libtool-ltdl-devel* perl
設定使用者作業系統資源的限制
##在檔案/etc/security/limits.conf的最後增加以下內容
mysql soft nproc 2047
mysql hard nproc 16384
mysql soft nofile 1024
mysql hard nofile 65536
新增使用者和組
shell> groupadd mysql
shell> useradd -g mysql mysql
從原始碼生成特定指令
# 下載和解壓
shell> mkdir -p /home/q/mysql
shell> cd /home/q/mysql
shell> wget http://mirrors.sohu .com/mysql/MySQL-5.6/mysql-5.6.35.tar.gz
shell> tar -zxvf mysql-5.6.35.tar.gz
產生標準的建構檔
shell> cd mysql-5.6.35
shell>
cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_MYISAM_STORAGE_ENGINE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=ON \
-DMYSQL_DATADIR=/var/mysql/data \
-DSYSCONFDIR=/data/mysqldata/3306 \
-DMYSQL_UNIX_ADDR=/data/mysqldata/3306/mysql.sock
如果執行cmake報錯或者引數變更,需要重新配置,可執行下列步驟
通過rm命令,刪除原始碼包目錄下的Cmakecache.txt檔案,然後重新執行cmake命令
rm -if CMakeCache.txt
#重新執行 cmake ...
編譯和安裝
make && make install
修改MySQL軟體所在目錄的擁有者為 mysql 使用者
chown -R mysql:mysql /usr/local/mysql
修改mysql使用者的環境變數,編譯.bash_profile檔案
vi /home/mysql/.bash_profile
#在該檔案的最後增加下面兩行
export LANG=zh_CN.GB18030
export PATH=/usr/local/mysql/bin:$PATH
建立目錄
cd /data/
mkdir -p /data/mysqldata/{3306/{data,tmp,binlog},backup,scripts}
chown -R mysql:mysql mysqldata
su - mysql
cd /usr/local/mysql
建立my.cnf配置檔案並編輯
touch /data/mysqldata/3306/my.cnf
vi /data/mysqldata/3306/my.cnf
# 新增下列引數
[client]
port = 3306
socket = /data/mysqldata/3306/mysql.sock
# The MySQL server
[mysqld]
port = 3306
user = mysql
socket = /data/mysqldata/3306/mysql.sock
pid-file = /data/mysqldata/3306/mysql.pid
basedir = /usr/local/mysql
datadir = /data/mysqldata/3306/data
tmpdir = /data/mysqldata/3306/tmp
open_files_limit = 10240
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# Buffer
max_allowed_packet = 256M
max_heap_table_size = 256M
net_buffer_length = 8K
sort_buffer_size = 2M
join_buffer_size = 4M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
#log
log-bin = /data/mysqldata/3306/binlog/mysql-bin
binlog_cache_size = 32M
max_binlog_cache_size = 512M
max_binlog_size = 512M
binlog_format = mixed
log_output = FILE
log-error = ../mysql-error.log
slow_query_log = 1
slow_query_log_file = ../slow_query.log
general_log = 0
general_log_file = ../general_query.log
expire-logs-days = 14
#InnoDB
innodb_data_file_path = ibdatal:2048M:autoextend
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_buffer_pool_size = 1024M
explicit_defaults_for_timestamp=true
[mysql]
no-auto-rehash
prompt = (\[email protected]\h) [\d]>\_
default-character-set = gbk
初始化mysql
/usr/local/mysql/scripts/mysql_install_db --datadir=/data/mysqldata/3306/data --basedir=/usr/local/mysql
啟動資料庫服務
shell> cd /usr/local/mysql
shell> bin/mysqld_safe --defaults-file=/data/mysqldata/3306/my.cnf &
檢視3306埠是否已分配並檢查mysqld相關程序是否存在的方式
netstat -lnt | grep 3306
ps -ef | grep bin/mysql | grep -v grep
建立系統路徑
ln -s /usr/local/mysql/bin/mysql /usr/bin
初次進入MySQL
# 首次進入
mysql
select user,host from mysql.user; #查詢使用者
# 為保證安全刪除其他使用者
delete from mysql.user where (user,host) not in (select 'root','localhost');
# 修改現有使用者
update mysql.user set user='root',password=password('111111');
# 刪除test庫的許可權
truncate table mysql.db;
# 重新整理許可權
flush privileges;
開啟防火牆
-A INPUT -m state --state NEW -m tcp -p -dport 3306 -j ACCEPT
vi /data/mysqldata/scripts/mysql_env.ini
#set env
MYSQL_USER=root
MYSQL_PASS='111111'
# check parameter
if [ $# -ne 1]
then
HOST_PORT=3306
else
HOST_PORT=$1
fi
chmod 600 /data/mysqldata/scripts/mysql_env.ini
vi /data/mysqldata/scripts/mysql_db_startup.sh