记一次docker安装MySQL源码编译

开始

最近突然想把MySQL的主从复制,读写分离实际操作一遍,仅为记录学习过程,大佬勿喷

windos下docker安装centos7

因为我的云服务器配置太低(太穷了),所有打算使用实体机搭建,废话不多说开始搞。

  1. 首先下载centos7镜像;

    docker pull centos:centos7
    
  2. 启动centos容器把docker上centos的22端口映射到本机5001端口需要以特权模式运行容器,不然无法使用systemctl启动服务;

    docker run -itd -p5001:22 --privileged=true --name centos centos:centos7 /usr/sbin/init
    
  3. 进入centos容器;
    如果使用容器ID可通过:docker ps 命令查看
    我这里是用的容器名字

    docker exec -it centos /bin/bash
    

    在这里插入图片描述

  4. 修改root密码,初始化密码root1234;

    passwd root
    

在这里插入图片描述

  1. 安装容器的openssh-server,修改配置,启动ssh服务

    yum install openssh-server -y
    

    安装后,修改/etc/ssh/sshd_config配置并保存:
    PermitRootLogin yes
    UsePAM no

    vi /etc/ssh/sshd_config
    

    在这里插入图片描述
    在这里插入图片描述

  2. 启动ssh服务;

    systemctl start sshd
    
  3. 配置完成,使用xshell连接;
    在这里插入图片描述
    在这里插入图片描述

  4. 至此已经完成了docker中centos容器运行以及使用xshell链接。

mysql官网下载MySQL5.6.40源码

MySQL5.6.40下载地址

在这里插入图片描述
拉到最下面下载稳定版本
在这里插入图片描述
进入centos系统安装编译MySQL所需依赖包

yum -y install wget vim bash-completion
yum -y install gcc gcc-c++ cmake ncurses-devel autoconf perl perl-devel
yum install cmake -y
yum install make
yum -y install nss  
yum -y update nss  

创建用户

 useradd mysql -s /sbin/nologin -M

在centos7创建application文件夹

mkdir application

把mysql5.6.40源码包上传到appliaction文件夹解压源码包。

tar xf mysql-5.6.40.tar.gz

#进入MySQL目录

 cd mysql-5.6.40

在mysql-5.6.40里创建data,tmp文件夹

mkdir data
mkdir tmp

#生成

[root@db02 mysql-5.6.40]#
#程序存放位置
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.40 \
#数据存放位置
-DMYSQL_DATADIR=/application/mysql-5.6.40/data \
#socket文件存放位置
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.40/tmp/mysql.sock \
#使用utf8字符集
-DDEFAULT_CHARSET=utf8 \
#校验规则
-DDEFAULT_COLLATION=utf8_general_ci \
#使用其他额外的字符集
-DWITH_EXTRA_CHARSETS=all \
#支持的存储引擎
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
#禁用的存储引擎
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
#启用zlib库支持(zib、gzib相关)
-DWITH_ZLIB=bundled \
#启用SSL库支持(安全套接层)
-DWITH_SSL=bundled \
#启用本地数据导入支持
-DENABLED_LOCAL_INFILE=1 \
#编译嵌入式服务器支持
-DWITH_EMBEDDED_SERVER=1 \
# mysql5.6支持了google的c++mock框架了,允许下载,否则会安装报错。
-DENABLE_DOWNLOADS=1 \
#禁用debug(默认为禁用)
-DWITH_DEBUG=0


# 快速复制
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.40 \
-DINSTALL_DATADIR=/application/mysql-5.6.40/data \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=all \
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.40/tmp/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0
#编译
[root@db02 mysql-5.6.40]# make
#安装
[root@db02 mysql-5.6.40]# make install
#做软链接
[root@db02 mysql-5.6.40]# ln -s /application/mysql-5.6.40/ /application/mysql
#拷贝配置文件
[root@db02 mysql-5.6.40]# cp support-files/my*.cnf /etc/my.cnf
#拷贝mysql启动脚本
[root@db02 mysql-5.6.40]# cp support-files/mysql.server /etc/init.d/mysqld
#进入MySQL初始化脚本目录
[root@db02 mysql-5.6.40]# cd /application/mysql/scripts/
#初始化MySQL
[root@db02 mysql-5.6.40]# ./mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data --user=mysql
#授权
[root@db02 mysql-5.6.40]# chown -R mysql.mysql /application/mysql/
#给启动脚本授权700
[root@db02 mysql-5.6.40]# chmod 700 /etc/init.d/mysqld
#systemd管理mysql启动
[root@db02 mysql-5.6.40]# vim /usr/lib/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=https://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
#设置开机自启动C6
[root@db02 mysql-5.6.40]# chkconfig mysqld on
#设置开机自启动C7
[root@db02 mysql-5.6.40]# systemctl enable mysqld
#启动MySQLC6
[root@db02 mysql-5.6.40]# /etc/init.d/mysqld start
#启动MySQLC7
[root@db02 mysql-5.6.40]# systemctl start mysqld
#创建tmp目录(5.6.40版本不会自动创建tmp目录)
[root@db02 mysql-5.6.40]# mkdir /application/mysql-5.6.40/tmp
#添加环境变量
[root@db02 ~]# echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile
#个人推荐
[root@db02 ~]# echo 'PATH=/application/mysql/bin/:$PATH' >/etc/profile.d/mysql.sh
[root@db02 ~]# source /etc/profile.d/mysql.sh
#设置MySQL密码
[root@db02 ~]# mysqladmin -uroot password 'oldboy123'
#MySQL登陆
[root@db02 ~]# mysql -uuser -ppassword -Ssocket -hhost
#MySQL基本操作及基本优化
#查看库
mysql> show databases;
#删库
mysql> drop database test;
#使用库
mysql> use mysql
#查看表
mysql> show tables;
#查看当前所在库
mysql> select database();
#查看mysql用户
mysql> select user,host from user;
mysql> select user,host,password from user;
#删除用户
mysql> select user,host from user;
mysql> drop user ''@'db02';
mysql> drop user root@db02;
mysql> drop user root@'::1';
mysql> drop user root@'127.0.0.1';

错误问题处理

如安装失败重新编译时,需要清除旧的对象文件和缓存信息。

[root@chufeng mysql-5.6.40]# make clean
[root@chufeng mysql-5.6.40]# rm -f CMakeCache.txt
[root@chufeng mysql-5.6.40]# rm -rf /etc/my.cnf

源码编译安装Mysql的时候出现的错:Linking CXX static library libmysys_ssl.a
安装包完了以后就直接又执行cmake 的命令,没有删除rm -f CMakeCache.txt 这个文件,
当执行make && make install 的时候就报了这个错

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值