centos7.2編譯安裝mysql5.7.21報錯解決

編譯安裝mysql

安裝環境
安裝包
[root@ecs-adfa ~]# ls /root/tools/
app.tar.gz mysql-5.7.21 mysql-5.7.21.tar.gz nginx-1.15.0.tar.gz nginx_conf.tar.gz
操作系統
[root@ecs-adfa ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
內存
[root@ecs-adfa ~]# free -m
total used free shared buff/cache available
Mem: 7296 456 230 7 6609 6553
Swap: 4095 1 4094
磁盤
[root@ecs-adfa ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda2 36G 13G 22G 37% /
devtmpfs 3.8G 0 3.8G 0% /dev
tmpfs 3.7G 0 3.7G 0% /dev/shm
tmpfs 3.7G 8.5M 3.7G 1% /run
tmpfs 3.7G 0 3.7G 0% /sys/fs/cgroup
tmpfs 730M 0 730M 0% /run/user/0

安裝過程
習慣把服務安裝到統一路徑下
mkdir /app

安裝依賴
yum -y install make gcc-c++ cmake bison-devel ncurses-devel libaio libaio-devel perl-Data-Dumper net-tools

添加mysql用戶
useradd -M -s /sbin/nologin mysql

高版本mysql需要boots庫的安裝纔可以正常運行
在/usr/local下創建一個名爲boost的文件夾
mkdir -p /usr/local/boost
進入這個新創建的文件夾然後下載boost
wget http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
解壓即可
tar -xvzf boost_1_59_0.tar.gz

編譯參數
cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql-5.7.21 -DMYSQL_DATADIR=/app/mysql-5.7.21/data -DSYSCONFDIR=/etc -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock -DMYSQL_TCP_PORT=3306 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_BOOST=/usr/local/boost

make && make install

初始化mysql

cp /root/tools/support-files/mysql.server /etc/init.d/mysqld
chown –R mysql.mysql /app/mysql_5.7.21/data
chmod +x /etc/init.d/mysqld
chmod 1777 /tmp
echo ‘export PATH=/app/mysql-5.7.21/bin:$PATH’>>/etc/profile
source /etc/profile
/app/mysql/bin/mysqld --initialize --user=mysql --basedir=/app/mysql-5.7.21 --datadir=/app/mysql-5.7.21/data
注意:初始化完成會生成root密碼,複製,方便登錄到mysql重置密碼

初始化完成之後報WARNING
2018-06-17T10:53:58.352241Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).

解決:
在/etc/my.cnf 文件中的[mysqld]下添加一行explicit_defaults_for_timestamp = TRUE就可以了

開始啓動mysql
/etc/init.d/mysqld start

但是卻報錯了,
竟然報錯了
報錯了
[root@ecs-adfa support-files]# /etc/init.d/mysqld start
Starting MySQL.2018-06-17T11:08:05.949747Z mysqld_safe error: log-error set to '/var/log/mariadb/mariadb.log', however file don't exists. Create writable for user 'mysql'.
ERROR! The server quit without updating PID file (/var/lib/mysql/ecs-adfa.novalocal.pid).

也看了幾個網友的文章,有的說是刪除掉my.cnf即可啓動,但是呢,生產環境中需要添加或者修改mysql的配置文件,刪掉定然是行不通的,自己也就沒試可行否。

自己的解決辦法:
手動創建log文件並授權給mysql
mkdir -p /var/log/mariadb
touch /var/log/mariadb/mariadb.log
chown -R mysql.mysql /var/log/mariadb/mariadb.log

再次啓動mysql,又報錯(嘗試了多次,中間缺少部分報錯信息)
MySql server startup error 'The server quit without updating PID file '

解決
修改my.cnf中默認[mysqld]的datadir和sock的路徑
改爲
[mysqld]
datadir=/app/mysql-5.7.21/data
socket=/tmp/mysql.sock

再啓動mysql
[root@ecs-adfa support-files]# /etc/init.d/mysqld start
Starting MySQL. SUCCESS!

但是,在mysql -uroot -p登錄mysql的時候,又報錯
說是找不到sock的(報錯當時沒記錄下來)

解決:
添加sock的路徑
修改/etc/my.cnf.d/mysql-clients.cnf
[mysql]
socket=/tmp/mysql.sock

至此,可以登錄,記得登錄之後修改密碼,即使自己不修改,mysql也會提醒你修改的。

就先這樣大概記錄下吧,以後遇到在修改。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章