编译安装mysql
安装环境
安装包
[[email protected] ~]# 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
操作系统
[[email protected] ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
内存
[[email protected] ~]# free -m
total used free shared buff/cache available
Mem: 7296 456 230 7 6609 6553
Swap: 4095 1 4094
磁盘
[[email protected] ~]# 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
但是却报错了,
竟然报错了
报错了
[[email protected] 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
[[email protected] 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也会提醒你修改的。
就先这样大概记录下吧,以后遇到在修改。
原文地址:http://blog.51cto.com/6010131/2130194