1. 程式人生 > >Mysql 5.6.35 原始碼安裝

Mysql 5.6.35 原始碼安裝

安裝環境

系統: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