当前位置: 首页 > news >正文

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也会提醒你修改的。

就先这样大概记录下吧,以后遇到在修改。

转载于:https://blog.51cto.com/6010131/2130194

相关文章:

  • 进程与线程区别
  • ASP.NET CORE系列【四】基于Claim登录授权
  • 【JSConf EU 2018】主题总结 (部分主题已有中文文章)
  • Java系列之EJB 理解
  • 百度echarts可以做什么
  • 第六章
  • Disruptor并发框架
  • Oracle基础学习(二) 存储过程和函数
  • (四)Linux Shell编程——输入输出重定向
  • RHEL6解决无法使用YUM源问题 {已验证切实可行}
  • .NET Core 中的路径问题
  • 太多脚本将会毁掉持续交付
  • java中的equals和==
  • Fcoin交易所的危险游戏!韭菜请远离!
  • mavne settings.xml
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • android图片蒙层
  • canvas 绘制双线技巧
  • extract-text-webpack-plugin用法
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • PAT A1017 优先队列
  • SpringBoot 实战 (三) | 配置文件详解
  • Three.js 再探 - 写一个跳一跳极简版游戏
  • vue从创建到完整的饿了么(11)组件的使用(svg图标及watch的简单使用)
  • 程序员最讨厌的9句话,你可有补充?
  • 订阅Forge Viewer所有的事件
  • 码农张的Bug人生 - 见面之礼
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 软件开发学习的5大技巧,你知道吗?
  • 新版博客前端前瞻
  • puppet连载22:define用法
  • Spring第一个helloWorld
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • ###项目技术发展史
  • #{} 和 ${}区别
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (四)c52学习之旅-流水LED灯
  • (转)jQuery 基础
  • (转)程序员疫苗:代码注入
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .NET 回调、接口回调、 委托
  • .net打印*三角形
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [BZOJ1060][ZJOI2007]时态同步 树形dp
  • [BZOJ1877][SDOI2009]晨跑[最大流+费用流]