**安裝前準備node
操做系統環境:Centos 7.2mysql
[root@localhost soft]# rpm -qa | grep mariadblinux
[root@localhost soft]# rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64c++
[root@localhost soft]# rpm -e --nodeps mariadb-5.5.60-1.el7_5.x86_64sql
[root@localhost soft]# rpm -e --nodeps mariadb-server-5.5.60-1.el7_5.x86_64shell
一、解決依賴包並下載源碼包至/soft/目錄下數據庫
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake bison cd /soft/ 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 #解壓 mv boost_1_59_0 /usr/local/boost #移動至/usr/local/boost/目錄下 wget http://cdn.mysql.com/Downloads/MySQL-5.7/mysql-5.7.17.tar.gz tar -zxvf mysql-5.7.17.tar.gz
二、新建MySQL用戶和用戶組,建立/data/mysql 目錄存放mysql數據vim
groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql mkdir -pv /data/mysql
三、預編譯及編譯安裝數組
cd mysql-5.7.17 [root@node03 mysql-5.7.17]# cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/data/mysql \ -DSYSCONFDIR=/etc \ -DWITH_MYISAM_STORAGE_ENGINE=1 \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_MEMORY_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock\ -DENABLED_LOCAL_INFILE=1 \ -DWITH_PARTITION_STORAGE_ENGINE=1 \ -DWITH_BOOST=/usr/local/boost \ -DMYSQL_USER=mysql \ -DEXTRA_CHARSETS=all \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci
注:bash
DCMAKE_INSTALL_PREFIX=/usr/local/mysql:安裝路徑
DMYSQL_DATADIR=/data/mysql:數據文件存放位置
DSYSCONFDIR=/etc:my.cnf路徑
DWITH_MYISAM_STORAGE_ENGINE=1:支持MyIASM引擎
DWITH_INNOBASE_STORAGE_ENGINE=1:支持InnoDB引擎
DMYSQL_UNIX_ADDR=/data/mysql/mysqld.sock:鏈接數據庫socket路徑
DMYSQL_TCP_PORT=3306:端口
DENABLED_LOCAL_INFILE=1:容許從本地導入數據
DWITH_PARTITION_STORAGE_ENGINE=1:安裝支持數據庫分區
DEXTRA_CHARSETS=all:安裝全部的字符集
DDEFAULT_CHARSET=utf8:默認字符
DWITH_EMBEDDED_SERVER=1:嵌入式服務器
[root@node03 mysql-5.7.17]# make [root@node03 mysql-5.7.17]#make install #編譯安裝 [root@mysqltest ~]# chown -R root.mysql /usr/local/mysql/ [root@mysqltest ~]# chown -R root.mysql /data/mysql/
錯誤
錯誤1:
CMake Error: your C compiler: "CMAKE_C_COMPILER-NOTFOUND" was not found. Please set CMAKE_C_COMPILER to a valid compiler path or name.
CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found. Please set CMAKE_CXX_COMPILER to a valid compiler path or name.
CMake Error at cmake/os/Linux.cmake:41 (MESSAGE):
Unsupported compiler!
Call Stack (most recent call first):
CMakeLists.txt:162 (INCLUDE)
解決辦法:
# yum groupinstall -y "Development Tools" "Server Platform Development" "Desktop Platform Development"
錯誤2:
CMake Error at cmake/readline.cmake:64 (MESSAGE):
Curses library not found. Please install appropriate package,
解決辦法:
[root@node02 ~]# yum install -y ncurses-devel.x86_64
後續
初始化數據庫
[root@mysql57 ~]#/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
錯誤:
若是datadir目錄有文件,則會報如下錯:
[root@localhost mysq]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql
2019-02-15T05:55:08.647604Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2019-02-15T05:55:08.647656Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2019-02-15T05:55:08.647660Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2019-02-15T05:55:08.649468Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting.
2019-02-15T05:55:08.649496Z 0 [ERROR] Aborting
因此要把data directory文件刪除掉再執行,若是刪除目錄下的文件仍是報一樣的錯,能夠試試把目錄刪除掉,再建立一個,而後受權:
複製MySQL配置文件
[root@node02 ~]# cd /usr/local/mysql/support-files/ [root@node02 support-files]# cp my-default.cnf /etc/my.cnf [root@node02 support-files]# vim /etc/my.cnf [mysqld] ... basedir=/usr/local/mysql datadir=/data/mysql port=3306 server_id=121 socket=/data/mysql/mysql.sock 啓動mysql服務 [root@mysqltest data]# /usr/local/mysql/bin/mysqld_safe --user=mysql & [root@mysqltest data]# ss -antp | grep mysqld LISTEN 0 80 :::3306 :::* users:(("mysqld",pid=63756,fd=20)) [root@mysqltest data]# 修改環境變量PATH [root@mysqltest data]# cat /etc/profile.d/mysql.sh export PATH=$PATH:/usr/local/mysql/bin [root@mysqltest data]# source /etc/profile.d/mysql.sh
[root@mysqltest data]# mysql -u root -p mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'Www.1.com'; mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) 設置源碼mysql服務開機自啓動 # vim /etc/rc.d/rc.local /usr/local/mysql/bin/mysqld_safe --user=mysql & [root@node02 bin]# chmod a+x /etc/rc.d/rc.local 複製mysql服務控制腳本 [root@db_server_01 ~]# cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld [root@db_server_01 ~]# chmod a+x /etc/init.d/mysqld [root@db_server_01 ~]# chkconfig --add mysqld >>>將mysqld服務添加爲系統服務 [root@db_server_01 ~]# chkconfig --level 2345 mysqld on >>>設置mysqld服務開機自啓動 2345: linux啓動模式 3:字符模式 5:圖形模式 2:字符,無網絡 4:預留
編輯/etc/my.cnf文件添加在[mysqld]版塊下添加以下變量,添加後重啓服務。
#開啓,而且能夠將mysql-bin改成其它的日誌名
log-bin=mysql-bin
#添加id號,若是作主從,就不能同樣
server-id=1
#超過200M將生產新的文件,最大和默認值是1GB
max_binlog_size=1G
#此參數表示binlog使用最大內存的數,默認1M。
max_binlog_cache_size=1M
#此參數表示binlog日誌保留的時間,默認單位是天。
expire_logs_days=7
前戲mkdir -pv /ops/{bak,log}
1.全量腳本:mybak-all.sh,對腳本變量部分進行配置
#!/bin/bash #使用:./xx.sh -uroot -p'123456',使用前修改腳本進行變量配置 #過程:備份並刷新binlog,將最新的binlog文件名記錄並總體壓縮打包 #恢復:先進行全量備份,再對根據tim-binlog.txt中的記錄,進行逐個恢復 #提示:最多每分鐘執行一次,不然會覆蓋同分鍾內的文件,能夠修改腳原本改善 # 出現問題會退出,能夠到指定的日誌目錄查看日誌輸出 # 同年的tar包超過指定天數的會刪除掉 #[變量] begin_time=`date +%F-%H-%M-%S` my_sql="/usr/local/mysql/bin/mysql" bak_sql="/usr/local/mysql/bin/mysqldump" binlog_dir=/data/mysql/ bak_dir=/ops/bak log_dir=/ops/log/mybak-all.log #保存的天數,4周就是28天 save_day=28 #[自動變量] #當前年月 date_nian=`date +%Y-` #全部天數的數組 save_day_zu=($(for i in `seq 1 ${save_day}`;do date -d -${i}days "+%F";done)) #開始 /usr/bin/echo >> ${log_dir} /usr/bin/echo "time:$(date +%F-%H-%M-%S) info:開始全備份" >> ${log_dir} #檢查 ${my_sql} $* -e "show databases;" &> /tmp/info_error.txt if [[ $? -ne 0 ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) info:登錄命令錯誤" >> ${log_dir} /usr/bin/cat /tmp/info_error.txt #若是錯誤則顯示錯誤信息 exit 1 fi #移動到目錄 cd ${bak_dir} bak_time=`date +%F-%H-%M` bak_timetwo=`date +%F` #備份 ${bak_sql} $* --all-databases --flush-privileges --single-transaction --flush-logs --triggers --routines --events --hex-blob > mybak-all-${bak_time}.sql if [[ $? -ne 0 ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) error:備份失敗" /usr/bin/echo "time:$(date +%F-%H-%M-%S) error:備份失敗" >> ${log_dir} /usr/bin/cat /tmp/bak_error.txt #若是錯誤則顯示錯誤信息 exit 1 else bin_dian=`tail -n 1 ${binlog_dir}/mysql-bin.index` echo "${bin_dian}" > ${bak_time}-binlog.txt fi #壓縮 if [[ -f mybak-all-${bak_time}.tar.gz ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) info:壓縮包mybak-section-${bak_time}.tar.gz 已存在" >> ${log_dir} /usr/bin/rm -irf mybak-all-${bak_time}.tar.gz ${bak_sql}-binlog.txt fi /usr/bin/tar -cf mybak-all-${bak_time}.tar.gz mybak-all-${bak_time}.sql ${bak_time}-binlog.txt if [[ $? -ne 0 ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) error:壓縮失敗" >> ${log_dir} exit 1 fi #刪除sql文件 /usr/bin/rm -irf mybak-all-${bak_time}.sql ${bak_time}-binlog.txt if [[ $? -ne 0 ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) info:刪除sql文件失敗" >> ${log_dir} exit 1 fi #整理壓縮的日誌文件 for i in `ls | grep .tar.gz$` do echo $i | grep "^mybak-all.*tar.gz$" &> /dev/null if [[ $? -eq 0 ]];then a=`echo ${i%%.tar.gz}` b=`echo ${a:(-16)}` c=`echo ${b%-*}` d=`echo ${c%-*}` #看是否在數組中,不在則刪除 echo ${save_day_zu[*]} |grep -w $d &> /dev/null if [[ $? -ne 0 ]];then [[ "$d" != "$bak_timetwo" ]] && rm -rf $i fi else #不是當月的,其餘類型壓縮包,跳過 continue fi done #結束 last_time=`date +%F-%H-%M-%S` /usr/bin/echo "begin_time:${begin_time} last_time:${last_time}" >> ${log_dir} /usr/bin/echo "time:$(date +%F-%H-%M-%S) info:全備份完成" >> ${log_dir} /usr/bin/echo >> ${log_dir}
2.增量腳本:mybak-section.sh
#!/bin/bash #使用:./xx.sh -uroot -p'123456',將第一次增量備份後的binlog文件名寫到/tmp/binlog-section中,若都沒有,自動填寫mysql-bin.000001 #過程:增量先刷新binlog日誌,再查詢/tmp/binlog-section中記錄的上一次備份中最新的binlog日誌的值 # cp中間的binlog日誌,並進行壓縮。再將備份中最新的binlog日誌寫入。 #恢復:先進行全量恢復,再根據全量備份附帶的time-binlog.txt中的記錄逐個恢復。當前最新的Binlog日誌要去掉有問題的語句,例如drop等。 #提示:最多每分鐘執行一次,不然會覆蓋同分鍾內的文件,能夠修改腳原本改善 # 出現問題會退出,能夠到指定的日誌目錄查看日誌輸出 # 同年的tar包超過指定天數的會刪除掉 #[變量] begin_time=`date +%F-%H-%M-%S` my_sql="/usr/local/mysql/bin/mysql" bak_sql="/usr/local/mysql/bin/mysqldump" binlog_dir=/data/mysql/ binlog_index=${binlog_dir}/mysql-bin.index bak_dir=/ops/bak log_dir=/ops/log/mybak-section.log #保存的天數,4周就是28天 save_day=7 #[自動變量] #當前年 date_nian=`date +%Y-` #全部天數的數組 save_day_zu=($(for i in `seq 1 ${save_day}`;do date -d -${i}days "+%F";done)) #開始 /usr/bin/echo >> ${log_dir} /usr/bin/echo "time:$(date +%F-%H-%M-%S) info:開始增量備份" >> ${log_dir} #檢查 ${my_sql} $* -e "show databases;" &> /tmp/info_error.txt if [[ $? -ne 0 ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) info:登錄命令錯誤" >> ${log_dir} /usr/bin/cat /tmp/info_error.txt #若是錯誤則顯示錯誤信息 exit 1 fi #移動到目錄 cd ${bak_dir} bak_time=`date +%F-%H-%M` bak_timetwo=`date +%F` #刷新 ${my_sql} $* -e "flush logs" if [[ $? -ne 0 ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) error:刷新binlog失敗" >> ${log_dir} exit 1 fi #獲取開頭和結尾binlog名字 last_bin=`cat /tmp/binlog-section` next_bin=`tail -n 1 ${binlog_dir}/mysql-bin.index` echo ${last_bin} |grep 'mysql-bin' &> /dev/null if [[ $? -ne 0 ]];then echo "mysql-bin.000001" > /tmp/binlog-section #不存在則默認第一個 last_bin=`cat /tmp/binlog-section` fi #截取須要備份的binlog行數 a=`/usr/bin/sort ${binlog_dir}/mysql-bin.index | uniq | grep -n ${last_bin} | awk -F':' '{print $1}'` b=`/usr/bin/sort ${binlog_dir}/mysql-bin.index | uniq | grep -n ${next_bin} | awk -F':' '{print $1}'` let b-- #輸出最新節點 /usr/bin/echo "${next_bin}" > /tmp/binlog-section #建立文件 rm -rf mybak-section-${bak_time} /usr/bin/mkdir mybak-section-${bak_time} for i in `sed -n "${a},${b}p" ${binlog_dir}/mysql-bin.index | awk -F'./' '{print $2}'` do if [[ ! -f ${binlog_dir}/${i} ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) error:binlog文件${i} 不存在" >> ${log_dir} exit 1 fi cp -rf ${binlog_dir}/${i} mybak-section-${bak_time}/ if [[ ! -f mybak-section-${bak_time}/${i} ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) error:binlog文件${i} 備份失敗" >> ${log_dir} exit 1 fi done #壓縮 if [[ -f mybak-section-${bak_time}.tar.gz ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) info:壓縮包mybak-section-${bak_time}.tar.gz 已存在" >> ${log_dir} /usr/bin/rm -irf mybak-section-${bak_time}.tar.gz fi /usr/bin/tar -cf mybak-section-${bak_time}.tar.gz mybak-section-${bak_time} if [[ $? -ne 0 ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) error:壓縮失敗" >> ${log_dir} exit 1 fi #刪除binlog文件夾 /usr/bin/rm -irf mybak-section-${bak_time} if [[ $? -ne 0 ]];then /usr/bin/echo "time:$(date +%F-%H-%M-%S) info:刪除sql文件失敗" >> ${log_dir} exit 1 fi #整理壓縮的日誌文件 for i in `ls | grep "^mybak-section.*tar.gz$"` do echo $i | grep ${date_nian} &> /dev/null if [[ $? -eq 0 ]];then a=`echo ${i%%.tar.gz}` b=`echo ${a:(-16)}` #當前日誌年月日 c=`echo ${b%-*}` d=`echo ${c%-*}` #看是否在數組中,不在其中,而且不是當前時間,則刪除。 echo ${save_day_zu[*]} |grep -w $d &> /dev/null if [[ $? -ne 0 ]];then [[ "$d" != "$bak_timetwo" ]] && rm -rf $i fi else #不是當月的,其餘類型壓縮包,跳過 continue fi done #結束 last_time=`date +%F-%H-%M-%S` /usr/bin/echo "begin_time:${begin_time} last_time:${last_time}" >> ${log_dir} /usr/bin/echo "time:$(date +%F-%H-%M-%S) info:增量備份完成" >> ${log_dir} /usr/bin/echo >> ${log_dir}
週六晚3點i分進行全量備份 週一到週六天天進行增量備份, 全量保存4周 增量保存近一週的天天數據
crontab -e 添加計劃任務。
1 3 * * 6 /bin/bash /shell/mybak-all.sh -uroot -p'Www.1.com' 1 2 * * * /bin/bash /shell/mybak-section.sh -uroot -p'Www.1.com'
按照第一步,環境需求中,將mysql開啓binlog並重啓
vim /shell/mybak-all.sh
,將全量腳本複製到其中,並 chmod+ x /shell/mybak-all.sh
添加執行權限。
vim /shell/mybak-section.sh
,將增量腳本複製到其中,並 chmod +x /shell/mybak-section.sh
添加執行權限
建立測試數據庫create database test;
切換數據庫use test;
建立測試表create table s1(id int AUTO_INCREMENT PRIMARY KEY,name char(20),age int);
用 vim /root/bin/testsql.sh
命令建立一個數據插入腳本,隨機插入一千條數據用於測試。
#!/bin/bash ku=one biao=s1 zi() { zu=(q w e r t y u i o p a s d f g h j k l z x c v b n m) for i in `seq 1 5` do a=`echo $[RANDOM%24]` echo -n ${zu[a]} done } for i in `seq 1 1000` do b=`zi` mysql -uroot -p'Www.1.com' -e "use test;insert into s1(name,age) values('${b}',${i});" done
執行腳本bash /shell/testsql.sh
用以下命令檢查表的條目數是不是1000條mysql -uroot -p'Www.1.com' -e "use test;select count(*) from s1;"
第一次:
更改時間date -s 2016-04-04
執行全量腳本bash /shell/mybak-all.sh -uroot -p'Www.1.com'
再執行增量腳本bash /shell/mybak-section.sh -uroot -p'Www.1.com'
查看是否有2個tar包。能夠看到tar包ls /ops/bak
mybak-all-2016-04-04-00-00.tar.gz
mybak-section-2016-04-04-00-00.tar.gz
執行腳本插入1000條數據bash /shell/testsql.sh
用以下命令檢查表的條目數是不是2000條mysql -uroot -p'Www.1.com' -e "use test;select count(*) from s1;"
第二次:
更改時間date -s 2016-04-05
執行全量腳本bash /shell/mybak-all.sh -uroot -p'Www.1.com'
再執行增量腳本bash /shell/mybak-section.sh -uroot -p'Www.1.com'
用查看是否有4個tar包。能夠看到以下ls /ops/bak
mybak-all-2016-04-04-00-00.tar.gz / mybak-section-2016-04-04-00-00.tar.gz
mybak-all-2016-04-05-00-00.tar.gz / mybak-section-2016-04-05-00-00.tar.gz
執行腳本插入1000條數據bash /shell/testsql.sh
用以下命令檢查表的條目數是不是3000條mysql -uroot -p'Www.1.com' -e "use test;select count(*) from s1;"
第三次
更改時間date -s 2016-04-06
執行全量腳本bash /shell/mybak-all.sh -uroot -p'Www.1.com'
再執行增量腳本bash /shell/mybak-section.sh -uroot -p'Www.1.com'
用查看是否有4個tar包。能夠看到以下ls /ops/bak
mybak-all-2016-04-04-00-00.tar.gz / mybak-section-2016-04-04-00-00.tar.gz
mybak-all-2016-04-05-00-00.tar.gz / mybak-section-2016-04-05-00-00.tar.gz
mybak-all-2016-04-06-00-00.tar.gz / mybak-section-2016-04-06-00-00.tar.gz
執行腳本插入1000條數據bash /shell/testsql.sh
用以下命令檢查表的條目數是不是4000條mysql -uroot -p'Www.1.com' -e "use test;select count(*) from s1;"
刪除:
登錄mysql服務器
mysql -uroot -p’Www.1.com’
刪除test數據庫,用來模擬誤操做drop database test;
恢復第一步:準備
移動到備份所在的目錄cd /ops/bak
解開最近時間點的全量備份包,最近時間是2016-04-06tar -xf mybak-all-2016-04-06-00-00.tar.gz
解壓後能夠看到 mybak-all-2016-04-06-00-00.sql 和 2016-04-06-00-00-binlog.txt
其中mybak-all-2016-04-06-00-00.sql 是sql語句,用於恢復某個時間點的所有內容,若是隻誤操做某個庫,能夠單獨恢復某個庫。2016-04-06-00-00-binlog.txt中記錄了全備過程當中刷新的Binlog文件名。
解壓增量備份的文件夾 ,由於這2個腳本是前後執行的,因此不須要解壓6號前的,只解壓6號及之後的。tar -xf mybak-section-2016-04-06-00-00.tar.gz
解壓後能夠看到 mysql-bin.000008 和 mysql-bin.000009 2個binlog日誌
恢復第二步:全備份恢復
導入數據進去mysql -uroot -p'Www.1.com' < mybak-all-2016-04-06-00-00.sql
用以下命令檢查表的條目數是不是3000條,6號備份完成後,才添加的最後1000條。mysql -uroot -p'Www.1.com' -e "use test;select count(*) from s1;"
恢復第三步:增量恢復
查看應該從哪一個binlog文件恢復。當前得到 ./mysql-bin.000014cat 2016-04-06-00-00-binlog.txt
將 mybak-section-2016-04-06-00-00 文件夾中的 mysql-bin.000014 恢復,由於操做有問題的binlog日誌在15中,14日誌能夠直接用於恢復mysqlbinlog mybak-section-2016-04-06-00-00/ysql-bin.000014 | mysql -uroot -p'Www.1.com'
檢查表的條目數是不是3000條,由於在寫入3000條後,mysqldmp全備刷新了一下binlog,這個最新的是14,而尚未寫入任何東西時便執行增量備份了,刷新了一下binlog,最新的是15,這時候才導入了最新的1000條。若是是持續的在寫入,恢復14後會有數據變化。mysql -uroot -p'Www.1.com' -e "use test;select count(*) from s1;"
在mysql數據目錄/ops/server/mysql/data/下找到mysql-bin.000015
找出binlog日誌中有刪除數據庫語句的行數,當前爲728mysql -uroot -p'Www.1.com' -e "show binlog events in 'mysql-bin.000015'\G" | grep -n "drop database "
找出728先後幾行的內容,能夠看到出現問題的pos點爲5519,恢復到5519以前的數據便可。mysql -uroot -p'Www.1.com' -e "show binlog events in 'mysql-bin.000015'\G" | sed -n '715,730p'
進行恢復,stop-position是指定恢復截止的pos點。mysqlbinlog --stop-position=5519 mysql-bin.000015 | mysql -uroot -p'Www.1.com'
檢查表的條目數是不是4000條mysql -uroot -p'Www.1.com' -e "use test;select count(*) from s1;"
報錯: [root@localhost mysql]# mysql -u root -p Enter password: ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/data/mysql/mysqld.sock-DENABLED_LOCAL_INFILE=1' (2) 解決方法: [root@localhost mysql]# mv mysqld.sock mysqld.sock-DENABLED_LOCAL_INFILE=1