安装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 实战篇 |十分钟学会动物识别,快去寻找身边的小动物试试看吧送书