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升级之路

全部评论

相关推荐

昨天 11:04
已编辑
北方民族大学 前端工程师
“无名小卒还是名扬天下?”我知道很多人都不觉得我能走到今天这一步,当然,也包括我自己。在我的人生里,有两部作品刻下了最深的印记:《斗破苍穹》与《龙族》。这两部书总被人拿来对照:一边是萧炎的桀骜轻狂,一边是路明非的怯懦衰颓。有人说,天蚕土豆没见过魂天帝,但江南见过真凯撒。我时常觉得自己就是那个衰小孩路明非,可路明非可以开挂,我不可以;我也无数次幻想过能拥有萧炎那般年少轻狂的人生,可我没有他与生俱来的逆天天赋。我只是个平庸的普通人,一个看过《斗破苍穹》却开不了挂的路明非,只能一步一步往上爬。从我下定决心找实习的那一刻起,我就给自己定下了目标:我一定要为字节跳动卖命.jpg。萧炎有他的三年之约,我有我的两年半之约(其实是一年半)。2024.11.20,科大讯飞的第一封实习offer落进邮箱,我迈出了这场奔赴的第一步。2025.8.18,放弃百度转正的安稳机会,转身走进前路未卜的不确定里。我很感谢我在百度的mentor,是她从茫茫人海选中了我,给了我大厂实习的机会。即便那段时间我状态差、产出不理想,她依旧愿意认可我、希望我留下转正。2025.11.14,我选择走进字节跳动,以实习生的身份重新出发,放下过往,清零重来,只为奔赴心之所向。2026.3.25 - 3.27,三天速通上海飞书,斩获Special Offer。被告知面试通过的那一刻,我的内心无比平静,就像这个offer本就该属于我。不是侥幸,是应得的。这一路,有人看轻过我的出身,不相信我能走到这里;也有人在我看不见前路的时候,替我举过灯。没有他们的鼓励与支撑,就没有今天站在这里的我。我看到了自强不息的激荡,那是一个双非的伟大乐章!我是雨夜迈巴赫,我要开启属于我的新篇章了。
在看牛客的本杰明很勇...:真心祝贺l总 我永远的偶像 我滴神
春招至今,你收到几个面试...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务