安装MySQL出现错误?快去试试在Docker CentOS7.x镜像中通过源码方式安装

Posted 守夜人爱吃兔子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装MySQL出现错误?快去试试在Docker CentOS7.x镜像中通过源码方式安装相关的知识,希望对你有一定的参考价值。

最近需要将三台腾讯云服务器的应用全部迁移到一个Docker CentOS7.x的镜像中。其他应用迁移都比较顺利,唯安装mysql遇到了一些问题。因为在容器中使用systemctl/service命令会出现下图的错误:

虽然找到一些解决方案,但是需要在宿主机上操作,于是找了容器平台运营方,很遗憾他们回答:“无法解决”。这就无法使用我一贯安装MySQL的yum源方式,改成使用源码安装MySQL。以下记录我通过源码方式安装MySQL的过程。

一、下载MySQL

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.34.tar.gz

版本说明(通过以上链接下载的MySQL的版本说明):

  • 版本 MySQL Community Server 5.7.34
  • Source Code
  • Generic Linux (Architecture Independent)
  • 带boost版本

二、环境依赖

源码方式安装MySQL所需的环境依赖:

  • cmake
  • make
  • gcc
  • gcc-c++
  • bison
  • ncurses
  • ncurses-devel(devel是开发版本)
yum -y install cmake make gcc gcc-c++ bison ncurses ncurses-devel

三、 安装MySQL

1. 解压

tar -zxvf mysql-boost-5.7.34.tar.gz
cd mysql-5.7.34/  

2. 创建编译目录

mkdir configure
cd configure

3. 生成编译环境

cmake .. -DWITH_BOOST=../boost/boost_1_59_0/ -DWITH_EMBEDDED_SERVER=OFF

4. 安装编译

make && make install

5. 创建mysql用户组和用户

groupadd mysql
useradd -g mysql mysql

6. 设置权限

MySQL通过3.4. 安装编译步骤完成后所在的目录为 /usr/local/mysql

chown -R mysql:mysql /usr/local/mysql

7. 创建my.cnf

vim /etc/my.cnf

my.cnf里面的内容为如下:

 For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

[client]
default-character-set=utf8mb4

[mysql]
default-character-set=utf8mb4

[mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock

character-set-client-handshake=FALSE
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

explicit_defaults_for_timestamp=true

以上内容可自行调整

8. 初始化数据库

cd /usr/local/mysql/bin
./mysqld --initialize --user=mysql

在这边需要成功启动数据库跳过密码进入MySQL再修改密码,因为我没有显示初始化密码。

9. 启动数据库

cd /usr/local/mysql/support-files
./mysql.server start

因为在文章开始时说过,我这边的容器中无法使用systemctl/service命令,所以我没有把MySQL加入系统服务,如果是你有需要的可以自行加入。

10. 设置登录MySQL

通过一下命令创建软连接,可直接在命令行使用mysql命令。

ln -s /usr/local/mysql/bin/mysql /usr/local/bin

创建软链接到/tmp/mysql.sock

ln -s /usr/local/mysql/mysql.sock /tmp/mysql.sock

11. 免密登录

修改/etc/my.cnf,添加skip-grant-tables

重启MySQL

cd /usr/local/mysql/support-files
./mysql.server restart

免密进入MySQL命令行

mysql

修改登录密码

use mysql;
update user set authentication_string=password('PASSWORD') where user='root';
flush privileges;

最后,退出MySQL命令行,将/etc/my.cnf中的skip-grant-tables删除或注释掉,再次重启MySQL就可以使用新修改的密码登录。

 

四、总结

在遇到问题的时候不要慌,首先去看日志(日志的路径在my.cnf的log-error配置可查看)。如果是通过日志无法直接解决,那可以将日志报错的关键字在网上多搜下资料,然后结合自身实际情况分析(因为每篇资料的机器环境都不一样相同),这样就能解决大部分问题了。

 

最后,本篇内容到这里结束啦,感谢您可以阅读完,觉得对您有帮助可以一键三连支持一下,我会持续更新java文章带给大家。祝万事胜意,来日可期!

以上是关于安装MySQL出现错误?快去试试在Docker CentOS7.x镜像中通过源码方式安装的主要内容,如果未能解决你的问题,请参考以下文章

AI 实战篇 |十分钟学会动物识别,快去寻找身边的小动物试试看吧送书

docker mysql8.0镜像出现的问题以及解决方法

ubuntu12.04安装mysql时发生依赖错误

AI 实战篇 |十分钟学会动物识别,快去寻找身边的小动物试试看吧送书

docker 安装mysql示例

Mysql服务无法启动,显示错误1067