安装步骤: 1. 下载官方MySQL安装包此次安装MySQL5.7是基于正式项目搭建的MySQL环境,已经经过正式环境的验证,证明下面安装方式的可行性,此方式已经开启了MySQLBinLog(数据增量备份的关键)、慢SQL记录、自定义数据保存路径等。
可以通过两个方式下载。第一种是服务器可以连接外网,这样可以通过Linux命令wget下载阿里云镜像MySQL官方安装包。第二种是服务器无法连接外网,这样需要在通过阿里云镜像本地下载MySQL官方安装包,然后通过Xftp传输到服务器。
- 本地阿里云下载镜像:阿里云镜像站
- Wget命令下载:wget https://mirrors.aliyun.com/mysql/MySQL-5.7/mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz
使用tar -zxvf 安装包名解压MySQL安装包
# 解压 tar -zxvf 待解压目录 tar -zxvf mysql-5.7.37-linux-glibc2.12-x86_64.tar.gz # 移动 mv 移动目录 移动后的目录 mv mysql-5.7.37-linux-glibc2.12-x86_64 mysql
经过上面命令可以得到mysql文件夹
数据存放目录一般要选择容量大的盘,因为生产环境数据量巨大,容易造成存储空间不足,可以通过df -h查看哪个路径下空间充足。笔者是在根目录下空间最为充足,故MySQL数据可以在根目录下创建文件夹存放。
在根目录下创建data目录,以及子目录mysql
# 创建data文件夹 mkdir data # 创建mysql文件夹用于存放mysql数据 cd mysql mkdir mysql4. 创建mysql用户并修改mysql目录组以及权限
为什么要修改刚创建的mysql目录的相关权限,因为mysql是一个数据库,数据比较敏感安全性要求比较高,修改数据所属组以及权限可以防止除root用户以及mysql用户本身能操作外其余用户无法操作mysql数据,提高安全性。另一个原因是如果msyql目录mysql用户无法操作的话,往往是会启动报错,所以需要修改组以及权限。
创建mysql组及mysql用户
# 创建msyql组 groupadd mysql # 创建mysql用户并添加到mysql组中,-r表示mysql是系统级用户,-g是所属组为mysql useradd -r -g mysql mysql
修改mysql目录的组以及权限
# mysql:mysql表示给与mysql目录mysql组mysql用户,-R表示递归,此后mysql的内容都是mysql组mysql用户 # /data/mysql 是你要改变目录的路径 chown mysql:mysql -R /data/mysql5. 修改MySQL配置文件
MySQL配置文件在/etc/my.cnf中,使用vim /etc/my.cnf编辑my.cnf,按i进入编辑模式,修改内容如下,然后按esc退出编辑模式按**:**输入wq,表示写入保存。
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
[mysqld]
port=3306
user=mysql
# mysql解压目录
basedir=/usr/local/mysql
# 数据存放目录
datadir=/data/mysql
# 跳过密码验证
# skip-grant-tables
socket=/data/mysql/mysql.sock
# 错误日志
log-error=/data/mysql/mysql.error
# mysql进程号
pid-file=/data/mysql/mysql.pid
# 日志记录慢查询SQL
slow_query_log = true
slow_query_log_file = /data/mysql/mysql_slow_query.log
long_query_time = 1
#记录没有使用index的查询记录
log-queries-not-using-indexes
# 配置mysqlbinlog
server-id = 1
log-bin = mysql-bin
binlog_format = MIXED
# 设置binlog过期时间,过期自动删除
expire-logs-days = 30
max_binlog_size = 128M
log_bin_trust_function_creators = 1
sql_mode = NO_ENGINE_SUBSTITUTION,NO_AUTO_CREATE_USER
#character config
# character_set_server=utf8mb4
# symbolic-links=0
# 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
# read_rnd_buffer_size = 2M
6. 初始化MySQL
使用命令初始化MySQL
# 首先需要今日mysql安装目录的bin目录下 cd /usr/local/mysql/bin # 初始化 --defaults-file为配置文件所在 ,--basedir为解压路径,--datadir为数据保存路径 --user表示MySQL所属用户 ./mysqld --defaults-file=/etc/my.cnf --basedir=/usr/local/mysql/ --datadir=/data/mysql/ --user=mysql --initialize
如果执行完初始化没有报错,复制MySQL启动脚本到/etc/init.d/目录便于使用service mysql start启动
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql6. 查看临时密码并启动MySQL登录
初始化MySQL是会生产一个临时密码,可以通过查看在my.cnf中配置的log-error的配置文件知晓。Hf=mN0fPujio
cat /data/mysql/mysql.error
下面启动MySQL
# 启动 service mysql start # 重启 service mysql restart # 停止 service mysql stop
直接通过临时密码登录MySQL
mysql -uroot -p # 然后输入临时密码就可以进入mysql了7. 修改mysql密码并添加MySQL环境
临时密码肯定是不能一直用的,所以我们要修改密码。
SET PASSWORD = PASSWORd('123456');
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
FLUSH PRIVILEGES;
接下来添加MySQL到系统环境,如果不添加也可以,但是每次登录到需要到mysql的bin下,添加之后可以在任意目录使用mysql -uroot -p进行登录了
使用vim /etc/profile编辑文件在文件最后添加以下内容后,保存修改,使用source /etc/profile刷新配置文件
# /usr/local/mysql/bin为解压目录下mysql的bin所在 export PATH=$PATH:/usr/local/mysql/bin
接下来可以使用新修改的密码登录mysql了!!!
到此Linux安装MySQL5.7基本结束,下面还有几点注意事项
- 如果远程登录连接不上,或者程序连接mysql失败
- 该ip没有连接MySQL的权限
参考:赋予连接权限 - 防火墙没有开放3306端口
firewall-cmd --zone=public --list-port查看端口开放情况,没有开放,开放即可 - 云服务器安全组入站没有开放3306
云服务器配置安全组入站规则添加3306
- 该ip没有连接MySQL的权限



