ä¸ï¼åå¤å·¥ä½
å¦æcmakeå·²ç»é¦å å®è£ 好ï¼é£ä¹ç¼è¯Mysqlï¼å 对å½åç®å½.æ¥çä¾èµå ³ç³»Â
cmake âgraphviz
Â
Â
Â
1ï¼å¨å½åç¯å¢ä¸æ¥ç3306端å£æ¯å¦è¢«é²ç«å¢å¼å¯:
firewall-cmd --query-post=3306/tcp
å¦æ为no,åæ§è¡ä»¥ä¸å½ä»¤å¼å¯3306端å£éè¿é²ç«å¢
firewall-cmd --permanent --add-post=3306/tcp
æ§è¡åæ¾ç¤ºsuccess
ç¶åéå¯é²ç«å¢
systemctl stop firewalld.service
systemctl start firewalld.service
å次æ¥è¯¢3306端å£æ¯å¦å¼å¯ï¼
firewall-cmd -query-post=3306/tcp
æ¾ç¤ºä¸ºyes
2,å建mysqlè¿è¡çç¨æ·ç»åç¨æ·
groupadd -r mysql && useradd -r -g mysql -s /bin/false -M mysql
3,ç¼è¯å®è£ æéçä¾èµå
######CMakeç¼è¯å·¥å ·
cd /usr/local/src
wget https://cmake.org/files/v3.8/cmake-3.8.2.tar.gz --å¯ç¨ææ°çæ¬
tar -zxf cmake-3.8.2.tar.gz
cd cmake-3.8.2.tar.gz
./configure --prefix=/usr/local/related/cmake
make && make install
######Ncursesï¼æä¾åè½é®å®ä¹(å¿«æ·é®),å±å¹ç»å¶ä»¥ååºäºææ¬ç»ç«¯çå¾å½¢äºå¨åè½çå¨æåº
å®è£ mysql éè¦ç为ncurses-devel
å®åªærpmå æ以åªè½å®è£ rpmå æè 使ç¨yumå®è£ yum -y install ncurses-devel
è¿éæ¼ç¤ºä¸rpmå®è£ ï¼å¦è¥éè¦æå®rpmçå®è£ ç®å½ï¼
å¯ä»¥ä½¿ç¨prefixåæ°ã
rpm -i âprefix=/usr/bin abc.rpmå°abc.rpmå å®è£ å°/usr/binç®å½ä¸ã
ä½æ¯è¿ä¸ªncurses-develä¸æ¯ææå®ç®å½ï¼ä¼æ¥éï¼
è¦åï¼ncurses-devel-6.0-10.20170520.fc27.x86_64.rpm: 头V3 RSA/SHA256 Signature, å¯é¥ ID f5282ee4: NOKEY
é误ï¼è½¯ä»¶å ncurses-devel ä¸è½éå®ä½
æ以åªè½é»è®¤å®è£
rpm -ivh ncurses-devel-6.0-10.20170520.fc27.x86_64.rpm
å®è£ å®éè¦Nå¤ä¾èµï¼æ以è¿æ¯yumå§
------------------------------------------------------------------------------------------------------------------------------------
ä¸é¢ç对äºncurseså®è£ 没ç¨ã
#cd /usr/local/src
#wget http://ftp.gnu.org/gnu/ncurses/ncurses-6.0.tar.gz --å¯ç¨ææ°çæ¬
#tar -zxf ncurses-6.0.tar.gz
#cd ncurses-6.0
#./configure --prefix=/usr/local/related/ncuress
#make && make install
#######bisonï¼GNUåæå¨çæå¨
cd /usr/local/src
wget http://ftp.gnu.org/gnu/bison/bison-3.0.4.tar.gz
tar -zxf bison-3.0.4.tar.gz
cd bison-3.0.4
./configure --prefix=/usr/local/related/bison
make && make install
å¦æ没æå®è£ M4åä¼æ¥:
GNU M4 1.4.6 or later is required; 1.4.16 or newer is recommended.
å ç¼è¯å®è£ GNU M4
cd /usr/local/src
wget ftp://ftp.gnu.org/gnu/m4/m4-1.4.6.tar.gz --å¯ç¨ææ°ç
tar -zxf m4-1.4.6.tar.gz
cd m4-1.4.6
./configure --prefix=/usr/local/related/m4
make && make install
ç¶åéè¦å°m4å å ¥ç¯å¢åé$PATH
vim /etc/profile
export PATH=â$PATH:/usr/local/related/m4/binâ
source /etc/profile
æåå次ç¼è¯å®è£ bisonå³å¯
make clean
./configure --prefix=/usr/local/related/bison
make && make install
3,å¨mysql5.7åç¼è¯å®è£ éè¦boostçæ¯æ
#######Booståºï¼ä¸ä¸ªå¼æºå¯ç§»æ¤çC++åºï¼æ¯C++æ ååè¿ç¨çå¼åå¼æä¹ä¸
cd /usr/local/src
wget https://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz/download
tar -zxf boost_1_59_0.tar.gz -C /usr/local/related
åªè§£ååºå³å¯ï¼ä¸ç¨ç¼è¯å®è£
å 为ncursesåbisonå没æ使ç¨yumå®è£ ï¼æ以å¨ç¼è¯mysqlæ¶å¿ é¡»æå®ncursesçä½ç½®å¦åä¼æ¥é:
Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH
Curses library not found.Â
Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, packagename is libncurses5-dev, on Redhat and derivates it isncurses-devel.
Â
#å¿ é¡»è§£å³ä»ï¼
Â
#ç¨-Dåæ°å®ä¹å®ï¼æå®å¤´æ件ååºçæå¨ç®å½
#å³å¨ç¼è¯mysqlæ¶cmkeå ä¸-DCURSES_LIBRARY=/usr/local/related/ncurses/lib/libncurses.a -DCURSES_INCLUDE_PATH=/usr/local/related/ncurses/includeå³å¯
解å³è¿ä¸ªé®é¢åï¼å¯¹äºbisonä¹ä¼æ¥æ¾ä¸å°çæ示ä½æ¯ä¸å½±åç¼è¯è¿è¡ï¼ä½æ¯è¿æ¯è¦è§£å³ï¼åªéå°bisonçbinç®å½æ·»å å°ç¯å¢åéå³å¯ã
vim /etc/profile
export PATH="$PATH:/usr/local/related/bison/bin"
æåå¼å§ç¼è¯mysql
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/data -DDEFAULT_CHARSET=utf8mb4 -DDEFAULT_COLLATION=utf8mb4_general_ci -DMYSQL_TCP_PORT=3306 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_DEBUG=0 -DWITH_ZLIB=/usr/local/related/zlib-1.2.11/ -DMYSQL_MAINTAINER_MODE=0 -DENABLE_DOWNLOADS=0 -DWITH_BOOST=/usr/local/related/boost_1_67_0/ -DWITH_SSL=yes -DOPENSSL_ROOT_DIR=/usr/local/related/openssl-1.0.2p/ -DENABLED_LOCAL_INFILE=1 -DEXTRA_CHARSETS=all -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock
å¦ææ¥é Please set them or make sure they are set and tested correctly in the CMake files: ZLIB_LIBRARY
å å ¥ï¼
-DZLIB_LIBRARY=/usr/local/related/zlib-1.2.3/lib/zlib.a
-ZLIB_INCLUDE_DIR=/usr/local/related/zlib-1.2.3/lib/include
Â
å¦æç¼è¯å¤±è´¥è®°å¾å é¤ææºç å ç®å½éé¢çCMakeCache.txtæ件åéæ°è¿è¡ç¼è¯ã
ç¼è¯å®æ¯åæ§è¡make && make install å³å¯ã
ç¼è¯å®è£ æ¶é´è¾é¿ï¼å 为æ们æå®ç¼è¯åæ°å¾æ¶åï¼æå®äºmysqlå¾æ°æ®åå¨çç®å½ï¼è¿ä¸ªæ¶åå¯ä»¥å æç®å½é½å建åºæ¥ï¼
mkdir /usr/local/mysql
mkdir /usr/local/mysql/data
mkdir /usr/local/mysql/logs
mkdir /usr/local/mysql/pids
å建å®æ¯åå°ç®å½çææè åæ´ä¸ºmysql
chown -R mysql:mysql /usr/local/mysql  -R为éå½çå°ç®å½ä¸çæ件夹åæ件ç»ä¸è®¾å®
å½make install å®æåéé ç½®/etc/my.cnfæ件ï¼æç»å¦ä¸ï¼
Â
[client]
port   = 3306
socket   = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
#bind-address = 10.0.1.108
port = 3306
pid-file = /usr/local/mysql/pids/mysqld.pid
socket = /usr/local/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
#tmpdir = /usr/local/mysql/tmp
#skip-grant-tables
#rpl_semi_sync_master_enabled=1
#rpl_semi_sync_master_timeout=1000
#rpl_semi_sync_slave_enabled=1
sql_mode       = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
# Log
#general-log = 1
#general_log_file = /mysqllog/bitvclog/3306/mysql.log
slow-query-log = 1
slow-query-log-file = /usr/local/mysql/logs/slow.log
log-slow-admin-statements
log-slow-slave-statements
long-query-time = 1
log-error = /usr/local/mysql/logs/mysqld.log
#log-warnings = 2 #mysql8 not used
back_log = 512
max_connections = 2048
max_connect_errors = 10000
connect_timeout = 60
skip-external-locking
skip-name-resolve
#skip-grant-tables
#skip-symbolic-links
#skip-innodb_checksums
#skip-innodb_doublewrite
explicit_defaults_for_timestamp
key_buffer_size = 16M
max_allowed_packet = 32M
table_open_cache = 512
sort_buffer_size = 8M
read_buffer_size = 4M
read_rnd_buffer_size = 32M
myisam_sort_buffer_size = 1M
thread_cache_size = 32
#query_cache_size = 128M # 8.0 not used
#query_cache_type = 0 # see up
server-id = 1
log-bin                = mysql-bin
binlog_format          = mixed
sync_binlog            = 1
#expire-logs-days       = 7 #use binlog_expire_logs_seconds insted max_binlog_size        = 256M
sync_binlog                    = 30
default-storage-engine = InnoDB
innodb_max_dirty_pages_pct = 90
innodb_file_per_table = 1
innodb_io_capacity = 100000
character-set-server = utf8
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
innodb_lock_wait_timeout = 50
[mysqldump]
quick
max_allowed_packet = 32M
[mysql]
no-auto-rehash
#safe-updates
[myisamchk]
key_buffer_size = 128M
sort_buffer_size = 128M
read_buffer = 2M
write_buffer = 2M
[mysqlhotcopy]
interactive-timeout
Â
Â
Â
主è¦æ¯ä¿®æ¹äºæ°æ®åæ¾ç®å½ï¼æ¥å¿æ件ç®å½ï¼socketç®å½çè·¯å¾ä¿¡æ¯ä¸åé¢æ建ç®å½ä¸è´ã
å¦æä¸æ³ä½¿ç¨é»è®¤å 载顺åºä¸çé ç½®æ件ï¼å¯ä»¥å¨å¯å¨å½ä»¤ä¸å¢å --defaults-file='path/to/my.cnf'æ¥æå®è¦ä½¿ç¨çé ç½®æ件ï¼ä½å¨æè¿éä¸ç´æ¹å¨é»è®¤my.cnfçä½ç½®ä¸æåï¼å¯è½çæ¬é®é¢ãæ以è¿æ¯æ¾å¨äº/etc/ä¸é¢
Â
4.æ§è½è°ä¼
ç±äºç¼è¯çæ¶é´æ¯å¨å¤ªé¿äºï¼è¿ä¸ªå°æ¹çæ§è½è°ä¼ä¸æ¶åä»»ä½çsqlä¼åï¼åªé对ä¸ç¹ï¼ä½¿ç¨jemallocæ¥æ¿æ¢é»è®¤çå å管ç
é¦å æ们éè¦ä»ç½ç«ä¸ä¸è½½jemallocï¼å®ç½å°åï¼
http://www.canonware.com/jemalloc/
ä»githubä¸å¯ä»¥ä¸è½½ææ°çæºç ï¼
https://github.com/jemalloc/jemalloc/releases
ç¼è¯jemallocï¼
./configure --libdir=/usr/local/lib
make
make install
为äºä¿è¯è½å¤æ¾å°jemallocåºï¼æ们éè¦è®¾ç½®ä¸ä¸åºè·¯å¾ï¼
echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
ldconfig //æ§è¡è¿ä¸ªå½ä»¤å¯ä»¥å·æ°åºè·¯å¾
æ们æ两ç§æ¹å¼æ¥ä½¿ç¨jemallocæ¥ä¼åmysql
å¨ç¼è¯çæ¶åå å ¥åæ°ï¼
-DCMAKE_EXE_LINKER_FLAGS="-ljemalloc" -DWITH_SAFEMALLOC=OFF
ç¶åéæ°ç¼è¯ä¸éã
ä¹å¯ä»¥ä¿®æ¹ /usr/local/mysql/bin/mysqld_safe
å¨# executing mysqld_safe ä¸é¢å ä¸
LD_PRELOAD=/usr/local/lib/libjemalloc.so
5.å¼æºèªå¯å¨çé ç½®
é常æ们éè¦éå¯æå¡å¨ï¼æ好å¨éå¯æå¡å¨çæ¶åå°±å¯å¨mysql
é¦å å°å®è£ ç®å½ä¸çï¼æ³¨ææ¯å®è£ ç®å½å¹¶éæºç å ç®å½ï¼suppost-files/mysql.server å¤å¶ä¸º/etc/init.d/mysqld
ç¶åç»äºæ§è¡æéchmod a+x /etc/init.d/mysqld
å å ¥ç³»ç»æå¡ chkconfig --add mysqld
设置å¼æºèªå¯å¨ chkconfig mysqld on
6,å°mysqlæå¡å å ¥ç³»ç»ç¯å¢åé /etc/profile
vim /etc/profile
注æé¤äºbinç®å½å¤è¿ælibç®å½ä¹éè¦å å ¥å°ç¯å¢åé
Â
export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
Â
ç¶åæ§è¡ source /etc/profile æ¥æ´æ°ç¯å¢åéä½¿å ¶çæ
7ï¼éåæ们ä¹éè¦å¯¹æ°æ®åºè¿è¡åå§åæä½ãèª mysql5.7 å¼å§ï¼åå§åç³»ç»è¡¨ä¸åä½¿ç¨ mysql_install_db å·¥å ·, èæ¯ä½¿ç¨ mysqld âinitialize-insecure âuser=mysql , å ¶ä¸ âinitialize 表示é»è®¤çæä¸ä¸ªå®å ¨çå¯ç , âinitialize-insecure 表示ä¸çæå¯ç , å¯ç 为空ï¼æ³¨æè¿åªæ¯åå§åèå·²ï¼å¹¶ä¸ä¼å¯å¨mysqld
Â
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
å¦ææ¥éï¼
/usr/lib64 ä¸ /usr/local/lib64é½å å ¥è½¯é¾
[[email protected] share]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
mysqld: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory
[[email protected] share]# find / -name libcrypto.so.1.0.0
/usr/local/related/openssl-1.0.2p/lib/libcrypto.so.1.0.0
[[email protected] share]# ln -s /usr/local/related/openssl-1.0.2p/lib/libcrypto.so.1.0.0 /usr/local/lib64/
[[email protected] share]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
mysqld: error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory
[[email protected] share]# ln -s /usr/local/related/openssl-1.0.2p/lib/libcrypto.so.1.0.0 /usr/lib64/
Â
æ§è¡å½ä»¤åå¯è½ä¼åºç°å 个warnning:
2017-07-17T03:36:18.954218Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2017-07-17T03:36:22.391313Z 0 [Warning] InnoDB: New log files created, LSN=45790
2017-07-17T03:36:22.847155Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2017-07-17T03:36:23.109030Z 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: 1add7612-6aa1-11e7-8eb1-000c291881a9.
2017-07-17T03:36:23.112328Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2017-07-17T03:36:23.115175Z 1 [Warning] [email protected] is created with an empty password ! Please consider switching off the --initialize-insecure option.
å ³é第ä¸ä¸ªæ¯è¯´
ä» 5.6å¼å§ï¼timestamp çé»è®¤è¡ä¸ºå·²ç»æ¯ deprecated äºã
å¨MySQL 5.6.6ä¹åï¼TIMESTAMPçé»è®¤è¡ä¸ºï¼
â¢TIMESTAMPåå¦æ没ææ确声æNULLå±æ§ï¼é»è®¤ä¸ºNOT NULLãï¼èå ¶ä»æ°æ®ç±»åï¼å¦æ没ææ¾ç¤ºå£°æ为NOT NULLï¼åå 许NULLå¼ãï¼è®¾ç½®TIMESTAMPçåå¼ä¸ºNULLï¼ä¼èªå¨åå¨ä¸ºå½åtimestampã
â¢è¡¨ä¸ç第ä¸ä¸ªTIMESTAMPåï¼å¦æ没æ声æNULLå±æ§ãDEFAULTæè ON UPDATEï¼ä¼èªå¨åé DEFAULT CURRENT_TIMESTAMPåON UPDATE CURRENT_TIMESTAMP å±æ§ã
â¢è¡¨ä¸ç¬¬äºä¸ªTIMESTAMPåï¼å¦æ没æ声æ为NULLæè DEFAULTåå¥ï¼é»è®¤èªå¨åé '0000-00-00 00:00:00â²ãæå ¥è¡æ¶æ²¡ææææ¹åçå¼ï¼è¯¥åé»è®¤åé '0000-00-00 00:00:00â²ï¼ä¸æ²¡æè¦åã
éå¯MySQLåé误æ¶å¤±ï¼è¿æ¶TIMESTAMPçè¡ä¸ºå¦ä¸ï¼
â¢TIMESTAMPå¦æ没ææ¾ç¤ºå£°æNOT NULLï¼æ¯å 许NULLå¼çï¼å¯ä»¥ç´æ¥è®¾ç½®æ¹å为NULLï¼è没æé»è®¤å¡«å è¡ä¸ºã
â¢TIMESTAMPä¸ä¼é»è®¤åé DEFAULT CURRENT_TIMESTAMP å ON UPDATE CURRENT_TIMESTAMPå±æ§ã
â¢å£°æ为NOT NULLä¸æ²¡æé»è®¤åå¥çTIMESTAMPåæ¯æ²¡æé»è®¤å¼çãå¾æ°æ®è¡¨ä¸æå ¥åï¼å没æç»TIMESTAMPåèµå¼æ¶ï¼å¦ææ¯ä¸¥æ ¼SQL模å¼ï¼ä¼æåºä¸ 个é误ï¼å¦æä¸¥æ ¼SQL模å¼æ²¡æå¯ç¨ï¼è¯¥åä¼èµå¼ä¸º'0000-00-00 00:00:00â²ï¼åæ¶åºç°ä¸ä¸ªè¦åãï¼è¿åMySQLå¤çå ¶ä»æ¶é´ç±»åæ°æ®ä¸æ ·ï¼å¦DATETIMEï¼
ï¼åè§ï¼http://www.jb51.net/article/71054.htmï¼
ä¹å°±æ¯ explicit_defaults_for_timestamp å ³éäº timestamp ç±»åå段éæ¥æçä¸äºä¼è®©äººæå°å¥æªçé»è®¤è¡ä¸ºï¼å å ¥äºè¯¥åæ°ä¹åï¼å¦æè¿éè¦ä¸º timestampç±»åçå段æå®é»è®¤è¡ä¸ºï¼é£ä¹å°±éè¦æ¾ç¤ºçå¨å建表æ¶æ¾ç¤ºçæå®ãexplicit_defaults_for_timestamp ä¹å°±æ¯è¿ä¸ªææï¼æ¾ç¤ºæå®é»è®¤å¼ä¸ºtimestampç±»åçå段ã
è¦å ³éè¿ä¸ªè¦åéè¦ä¿®æ¹/etc/my.cnf
Â
mysqld
explicit_defaults_for_timestamp=true
å ¶ä½è¦åèªå·±ç¿»è¯ä¸å³å¯ï¼æ²¡æå½±åã
å¦æä¸æ¯ç¬¬ä¸æ¬¡åå§åä¼æ¥éå¦ä¸ï¼
[[email protected] ~]# mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
2017-07-17T04:06:09.586245Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2017-07-17T04:06:09.586290Z 0 [ERROR] Aborting
æææ¯è¯´data ç®å½åºè¯¥ä¸ºç©ºä¸åºææ件ï¼æ以å°dataä¸çæ件å é¤å³å¯ã
åå§åä¹åå¼å¯mysqldæå¡ç«¯
/etc/init.d/mysqld start
æåæ们å°rootå¯ç ä¿®æ¹ä¸ä¸ï¼
Â
Â
Â
mysql -u root
mysql> use mysql;
mysql>update user set authentication_string=password('123456') where user='root' and Host = 'localhost';
mysql> FLUSH PRIVILEGES;
Â
æåç¹å«æé注æçä¸ç¹æ¯ï¼æ°ççmysqlæ°æ®åºä¸çuser表ä¸å·²ç»æ²¡æPasswordå段äº
èæ¯å°å å¯åçç¨æ·å¯ç åå¨äºauthentication_stringå段
8.tips
æ§è¡makeå½ä»¤çæ¶åå¯ä»¥å -jï¼å¤è¿ç¨ï¼åæ°æ¥å å¿«ç¼è¯é度
make -j âcpu æ ¸æ°â
æ¯å¦å·²ç¥CPUæ¯4æ ¸å¿çï¼å¯ä»¥ä½¿ç¨ï¼
make -j 4
-
å¦æå¯å¨æ¶æ¥Starting MySQL... ERROR! The server quit without updating PID file (/usr/local/mysql/pids/mysqld.pid).è¿ä¸ªé误ï¼
é£ä¹é®é¢å¾å¤§ä¸é¨åæ¯å¨My.cnfçé ç½®ä¸ï¼çä¸mysqld.logæ¥å¿é误ã
Â