我是靠谱客的博主 壮观大船,最近开发中收集的这篇文章主要介绍Mysql系列:Mysql5.7编译安装1:下载mysql源码包2:安装前准备3:编译安装4:配置/etc/my.cnf5:初始化数据6:配置环境变量7:将mysql 加入到systemctl中8:管理MySQL9:配置MySQL安全配置向导mysql_secure_installation,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

系统环境:Centos7

1:下载mysql源码包

https://dev.mysql.com/downloads/mysql/5.7.html

downloads 选择MySQL Community Server>source_code>Generic Linux (Architecture Independent), Compressed TAR Archive -> 选择需要的mysql版本,下载xxx.tar.gz包

cd /tmp
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24.tar.gz
wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz

所需资料百度网盘地址

链接:https://pan.baidu.com/s/1-C0JPrWZVCb2opkiYEUwqQ?pwd=yyds
提取码:yyds

2:安装前准备

添加禁止登陆的mysql用户
groupadd mysql
useradd -g mysql -s /bin/nologin mysql
创建文件路径
mkdir -p /data/mysql
# mysql数据路径
mkdir -p /usr/local/mysql
# mysql服务路径
mkdir -p /var/run/mysql
# mysql pid路径
mkdir -p /var/log/mysql
# mysql log路径
安装扩展依赖
yum -y install gcc gcc-c++ ncurses ncurses-devel cmake
5.7.5以后都需要安装boost
放到 /usr/local/目录
tar xzf /tmp/boost_1_59_0.tar.gz
mv /tmp/boost_1_59_0 /usr/local/
/usr/local/boost_1_59_0/bootstrap.sh
/usr/local/boost_1_59_0/b2 install
解压
cd /tmp
tar -zxvf mysql-5.7.24.tar.gz
cd mysql-5.7.24/

3:编译安装

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
-DMYSQL_DATADIR=/data/mysql 
-DSYSCONFDIR=/usr/local/mysql/etc 
-DMYSQL_UNIX_ADDR==/data/mysql/mysql.sock 
-DDOWNLOAD_BOOST=1 
-DWITH_BOOST=/usr/local/boost_1_59_0 
-DWITH_INNOBASE_STORAGE_ENGINE=1 
-DWITH_PARTITION_STORAGE_ENGINE=1 
-DWITH_FEDERATED_STORAGE_ENGINE=1 
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 
-DWITH_MYISAM_STORAGE_ENGINE=1 
-DENABLED_LOCAL_INFILE=1 
-DENABLE_DTRACE=0 
-DDEFAULT_CHARSET=utf8mb4 
-DDEFAULT_COLLATION=utf8mb4_general_ci 
-DWITH_EMBEDDED_SERVER=1 
-DMYSQL_USER=mysql
说明:
cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
#指定安装目录
-DMYSQL_DATADIR=/data/mysql 
#mysql数据文件存放目录
-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock 
#指定mysql.sock地址
-DSYSCONFDIR=/usr/local/mysql/etc
MySQL配置文件路径

3.1:cmake常见问题

如果失败了,请删除CMakeCache.txt文件

1)CMake Error at cmake/boost.cmake:81 (MESSAGE): You can download it with -DDOWNLOAD_BOOST=1 -DWITH_BOOST=

解决:
1:cd /usr/local/boost
wget http://sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz
2:cmake添加参数
-DDOWNLOAD_BOOST=1 -DWITH_BOOST=/usr/local/boost
重新cmake编译

3.2:make安装

make && make install

3.3:make常见问题-内存不足

错误: c++: internal compiler error: Killed (program cc1plus) mysql编译安装过程内存不足,安装需要2G内存

解决:
# dd if=/dev/zero of=/swapfile bs=1k count=4096000 --获取要增加的4G的SWAP文件块
# mkswap /swapfile -- 创建SWAP文件
# swapon /swapfile -- 激活SWAP文件
# swapon -s -- 查看SWAP信息是否正确
注意, swapfile文件的路径在/var/下
编译完后, 如果不想要交换分区了, 可以删除:
# swapoff /swapfile
# rm -fr /swapfile
重新cmake -> make && make install

4:配置/etc/my.cnf

cp /etc/my.cnf /etc/my.cnf.bak
vim /etc/my.cnf
[client]
port = 3306
socket = /data/mysql/mysql.sock
default-character-set = utf8mb4
[mysqld]
port = 3306
user = mysql
pid-file = /var/run/mysql/mysql.pid
socket = /data/mysql/mysql.sock
basedir = /usr/local/mysql
datadir = /data/mysql/
log_error
= /var/log/mysql/error.log
slow_query_log
= 1
long_query_time
= 3
slow_query_log_file = /var/log/mysql/slow.log
performance_schema
= 0
explicit_defaults_for_timestamp
secure-file-priv=''
sql_mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
init-connect
= 'SET NAMES utf8mb4'
[mysqldump]
quick
max_allowed_packet = 16M
[myisamchk]
key_buffer_size
= 256M
sort_buffer_size
= 8M
read_buffer
= 4M
write_buffer
= 4M

5:初始化数据

/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql

注: 之前版本mysql_install_db是在mysql_basedir/script下,5.7放在了mysql_install_db/bin目录下,且已被废弃“–initialize”会生成一个随机密码(~/.mysql_secret),而”–initialize-insecure”不会生成密码 –datadir目标目录下不能有数据文件

6:配置环境变量

vim /etc/profile.d/mysql.sh
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin
执行source让环境变量立即生效
source /etc/profile

7:将mysql 加入到systemctl中

vim /usr/lib/systemd/system/mysql.service
[Unit]
Description=The Mysql Process Manager
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/mysql/mysql.pid
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=false
[Install]
WantedBy=multi-user.target

执行: systemctl daemon-reload

8:管理MySQL

注意,在这一步可能会遇到很多问题,请确保权限正常
chown -R mysql:mysql /data/mysql/
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /usr/share/mysql/
chmod -R 777 /var/run/mysql
启动mysql
systemctl start mysql
查看mysql状态
systemctl status mysql
停止mysql状态
systemctl stop mysql

9:配置MySQL安全配置向导mysql_secure_installation

[develop@wd87 data]$ /usr/local/mysql/bin/mysql_secure_installation
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
输入要安装验证密码插件吗?
Press y|Y for Yes, any other key for No: y
There are three levels of password validation policy:
LOW
Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
数字、混合大小写和特殊字符
STRONG Length >= 8, numeric, mixed case, special characters and dictionary
file
输入密码安全等级一般选择 MEDIUM
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Please set the password for root here.
输入新密码
New password:
确认密码
Re-enter new password:
Estimated strength of the password: 100
输入是否继续使用提供的密码?
Do you wish to continue with the password provided?
(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
输入是否删除匿名用户?
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
输入不允许root远程登录?
Disallow root login remotely?
(Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
输入删除测试数据库并访问它
Remove test database and access to it?
(Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
重新加载特权表将确保所有更改到目前为止所作的规定将立即生效。
Reload privilege tables now?
(Press y|Y for Yes, any other key for No) : y
Success.
All done!

最后

以上就是壮观大船为你收集整理的Mysql系列:Mysql5.7编译安装1:下载mysql源码包2:安装前准备3:编译安装4:配置/etc/my.cnf5:初始化数据6:配置环境变量7:将mysql 加入到systemctl中8:管理MySQL9:配置MySQL安全配置向导mysql_secure_installation的全部内容,希望文章能够帮你解决Mysql系列:Mysql5.7编译安装1:下载mysql源码包2:安装前准备3:编译安装4:配置/etc/my.cnf5:初始化数据6:配置环境变量7:将mysql 加入到systemctl中8:管理MySQL9:配置MySQL安全配置向导mysql_secure_installation所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部