mysql之编译安装

在CentOS7中编译安装MySQL 5.7.29

一。依赖包安装

yum install gcc gcc-c++ ncurses ncurses-devel cmake bison -y

二。下载源码包(MySQL5.7.29源码包和依赖boost)

curl -o boost_1_59_0.tar.gz https://jaist.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

curl -o mysql-5.7.29.tar.gz
http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.29.tar.gz

三。解压

# 进入下载路径

#boost解压到/usr/local/目录
tar -zxvf boost_1_59_0.tar.gz -C /usr/local/

#MySQL解压到当前目录
tar -zxvf mysql-5.7.29.tar.gz

四。创建用户和组

创建MySQL用户和组,并且用户不能登录

groupadd -r mysql && useradd -r -g mysql -s /sbin/nologin -M mysql

五。创建相关目录

创建数据目录
mkdir -p /data/mysql && chown mysql.mysql /data/mysql
创建log目录
mkdir -p /var/log/mysql && chown mysql.mysql /var/log/mysql
创建Unix SOCK目录
mkdir -p /var/lib/mysql && chown mysql.mysql /var/lib/mysql
创建PID目录
mkdir -p /var/run/mysqld && chown mysql.mysql /var/run/mysqld

六。预编译

使用各种参数,预编译源代码。进入解压的MySQL源码目录,执行命令:

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/data/mysql -DSYSCONFDIR=/etc -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysqld.sock -DEXTRA_CHARSETS=all -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1 -DENABLED_PROFILING=1 -DMYSQL_TCP_PORT=3306 -DWITH_DEBUG=0 -DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost_1_59_0
格式化:

cmake .
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
-DMYSQL_DATADIR=/data/mysql 
-DSYSCONFDIR=/etc
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysqld.sock
-DEXTRA_CHARSETS=all
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_MYISAM_STORAGE_ENGINE=1
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DENABLED_LOCAL_INFILE=1
-DENABLED_PROFILING=1
-DMYSQL_TCP_PORT=3306
-DWITH_DEBUG=0
-DDOWNLOAD_BOOST=1
-DWITH_BOOST=/usr/local/boost_1_59_0

  说明:

DCMAKE_INSTALL_PREFIX=/usr/local/mysql :安装路径 
DMYSQL_DATADIR=/data/mysql :数据文件存放位置 
DSYSCONFDIR=/etc :my.cnf路径 
DMYSQL_UNIX_ADDR=/var/lib/mysql/mysqld.sock :连接数据库socket路径 
DEXTRA_CHARSETS=all :安装所有的字符集 
DDEFAULT_CHARSET=utf8 :默认字符 
DDEFAULT_COLLATION=utf8_general_ci :排序集 
DWITH_MYISAM_STORAGE_ENGINE=1 :支持MyIASM引擎 
DWITH_INNOBASE_STORAGE_ENGINE=1 :支持InnoDB引擎 
DWITH_PARTITION_STORAGE_ENGINE=1 :安装支持数据库分区 
DENABLED_LOCAL_INFILE=1 :允许从本地导入数据 
DENABLED_PROFILING=1 : 
DMYSQL_TCP_PORT=3306 :端口 
DWITH_DEBUG=0 : 
DDOWNLOAD_BOOST=1 :允许下载 
DWITH_BOOST=/usr/local/boost_1_59_0 :本地boost路径

七。编译安装

指定CPU数量编译

make -j grep processor /proc/cpuinfo | wc -l && make install

八。添加开机自启动

对目录修改权限,添加service/systemd服务

复制代码
chown -R mysql:mysql /usr/local/mysql
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld

开机自启 chkconfig --add mysqld

chkconfig mysqld on
复制代码

九。环境变量

将/usr/local/mysql/bin添加进入环境变量, 或者直接使用软链接的方式链到/usr/local/bin下:

复制代码

添加到环境变量

echo "" >> /etc/bashrc
echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/bashrc
echo "" >> /etc/bashrc
source ~/.bashrc
或添加到/etc/profile

PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
source /etc/profile

使用软链接

ln -s /usr/local/mysql/bin/* /usr/local/bin/
复制代码

十。初始化数据库

以上完成之后, 需要先进行初始化数据库, 否则直接启动会报错

复制代码
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

--user :指定用户
--basedir :MySQL所在目录
--datadir :MySQL数据库和表所在的目录,以及pid文件
复制代码

十一。启动服务

复制代码

使用service

service mysqld start

使用systemd

systemctl daemon-reload
systemctl start mysqld
复制代码

十二。修改配置文件(/etc/my.cnf)

  参考:

[root@iZ2864f6btwZ mysql-5.7.19]# vim /etc/my.cnf

[mysqld]
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock

[mysqld_safe]

log-error=/usr/local/mysql/logs/mysqld.log
pid-file=/usr/local/mysql/pids/mysqld.pid

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[client]
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock

[mysql]
default-character-set=utf8
socket=/usr/local/mysql/mysql.sock

include all files from the config directory

!includedir /etc/my.cnf.d
复制代码

十三。启动服务

service mysqld start

查看mysql运行状态

service mysqld status

十四。修改root用户密码

MySQL 5.7版本下的mysql数据库下已经没有password这个字段了,password字段改成了authentication_string,查询时使用authentication_string字段即可
  1)设置密码(推荐)

进入mysql库
update user set authentication_string=PASSWORD('newpassword') where user='root';

flush privileges;
  2)快速设置密码

mysqladmin -u root password 'newpassword'

常见问题:

  1. 预编译的术后出现错误
图片说明

  解决方案:

  临时添加交换空间(虚拟内存)

[root@iZ2864f6btwZ mysql-5.7.19]# dd if=/dev/zero of=/swapfile bs=1k count=2048000
2048000+0 records in
2048000+0 records out
2097152000 bytes (2.1 GB) copied, 34.6782 s, 60.5 MB/s
[root@iZ2864f6btwZ mysql-5.7.19]# mkswap /swapfile
Setting up swapspace version 1, size = 2047996 KiB
no label, UUID=56026239-26e6-40d9-b080-b95acd9db058
[root@iZ2864f6btwZ mysql-5.7.19]# swapon /swapfile
swapon: /swapfile: insecure permissions 0644, 0600 suggested.
[root@iZ2864f6btwZ mysql-5.7.19]# chmod 600 /swapfile

  继续执行make操作:

make clean
make
  如果编译完成之后不再使用交换空间,可执行命令:

[root@iZ2864f6btwZ mysql-5.7.19]# swapoff /swapfile
[root@iZ2864f6btwZ mysql-5.7.19]# rm /swapfile

温馨提示:
MySQL编译过程等待时间会比较久,有时都以为是“卡”住了,你可以使用top命令查看资源状态,看看cc1plus、make等进程是否在跳动,如果有跳动说明安装还在继续,由于我的 ecs 配置较低,此过程大约经历了几个小时,特别是在29%和74%的时候,几乎都要快放弃了, 如果有经济的能力的话,建议服务器配置还是尽量买高一点。
[root@iZ2864f6btwZ mysql-5.7.19]# top

  2. 客户端连接MySQL

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
  问题:/etc/my.cnf文件配置不正确

  解决方案:

  修改为正确的路径即可,可全局搜索my.sock

MySQL 文章被收录于专栏

MysqlDBA升级之路

注意!此信息未认证,请谨慎判断信息的真实性!

全部评论
空

相关内容推荐

头像
2022-12-06 13:45
门头沟学院_2023
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
头像
点赞 评论 收藏
转发
点赞 收藏 评论
分享

全站热榜

正在热议