CentOS 安装 MySQL 5.7
软件小窝
2024-02-16 23:22:329.35k 字预计阅读时长 18 分钟
安装包在本篇文章的最后
// 查看是否有 mariadb
rpm -qa|grep mariadb
// 删除 mariadb
rpm -e --nodeps xxx
// 解压mysql
tar -zxvf xxx
我是放在 根目录 下的,然后在里面建一个 data 和 log 目录
groupadd mysql
useradd -g mysql mysql
chown -R mysql /usr/local/mysql/
chgrp -R mysql /usr/local/mysql/
需要注意的是,mysql 5.7.18 开始,tar.gz 包不自带 mysql-default.cnf 文件了,所以 my.cnf 需要自己创建
以下是 mysql 可以自动识别 my.cnf 的默认位置
/etc/my.cnf |
全局选项 |
/etc/mysql/my.cnf |
全局选项 |
SYSCONFDIR/my.cnf |
全局选项 |
$MYSQL_HOME/my.cnf |
特定于服务器的选项(仅限服务器) |
defaults-extra-file |
使用 --defaults-extra-file 指定的文件, 如果有的话 |
~/.my.cnf |
用户特定选项 |
~/.mylogin.cnf |
特定于用户的登录路径选项(仅限客户端) |
[client]
# 端口
port=3306
# socket文件
socket=/mysql/mysql.sock
[mysql]
default-character-set=utf8mb4
[mysqld]
# 编号
server-id=1
# 端口
port=3306
# 字符集
character-set-server=utf8mb4
# 数据库安装目录
basedir=/usr/local/mysql
# 数据库数据存放目录
datadir=/mysql/data
# 临时目录
tmpdir=/tmp
# socket文件
socket=/mysql/mysql.sock
# 二进制日志文件
log-bin=/mysql/log/mysql-bin
# 二进制日志格式
binlog_format=ROW
# 日志过期时间,0 不过期
expire_logs_days=7
# 二进制日志数据库
#binlog-do-db=dbname
# 二进制日志忽略数据库
#binlog-ignore-db=dbname
# 开启慢查询
slow_query_log=1
# 慢查询日志文件
slow_query_log_file=/mysql/log/mysql-slow.log
# 慢查询超过5秒的记录
long_query_time=5
# timestamp列中的默认值和NULL值
explicit_defaults_for_timestamp=1
# 日志文件
log-error=/mysql/log/mysql-error.log
# pid文件
pid-file=/mysql/mysql.pid
# sql_mode
#sql_mode=""
[mysqldump]
quick
./bin/mysqld --initialize --user=mysql
# 将MySQL的服务脚本放到系统服务中
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
# 授予可执行权限
chmod +x /etc/init.d/mysql
# 添加mysql服务
chkconfig --add mysql
# 使 mysql 开机自启
chkconfig --level 345 mysql on
# 查看服务列表
chkconfig --list
# 方式一(推荐)
# 在 /etc/profile 中配置环境变量
vim /etc/profile
export MYSQL_HOME=/usr/local/mysql
export PATH=$PATH:$MYSQL_HOME/bin:$MYSQL_HOME/lib
source /etc/profile
# 方式二
# 创建软连接
ln -s /usr/local/mysql/bin/mysql /usr/bin
service mysql start
service mysql stop
service mysql restart
service mysql status
在 mysql-error.log 文件中查看
需要先修改密码才可以进行其他操作,否则会报
You must reset your password using ALTER USER statement before executing this statement.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
flush privileges;
云服务器还需要在安全组的入站规则中配置
# 开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
# 查看已开放的端口
firewall-cmd --zone=public --list-ports
# 这种方式不会更改权限
update mysql.user set host='%' where user='root' and host='localhost';
# 或者
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'test' WITH GRANT OPTION;
flush privileges;
mysqldump -uroot -pxxx 在脚本中输入密码 mysql 会提醒不安全
如果在 my.cnf 的 [mysqldump] 中配置了
user=root
password=xxx
就可以省略输入密码
-a -m -c 对应 access modify change
+/- + 某个数字后 - 某个数字内
-mmin +/- 分钟
-mtime +/- 天
例如:-mmin +1 一分钟后
#!/bin/bash
dir=/backup/mysql
# 备份数据库
db_name=test
# 备份时间
time=$(date +'%Y-%m-%d_%H:%M:%S')
# 文件名
file_name=mysql
mysqldump $backup_name --databases $db_name | gzip > $dir/$file_name'_'$db_name'_'$time.sql.gz
find $dir -name $file_name'_'$db_name'_*.sql.gz' -type f -mmin +1 -exec rm -rf {} \; >/dev/null
# 编写定时
crontab -e
*/1 * * * * sh /sh/mysql_backup.sh
# 查看定时
crontab -l
如果忘记了配置 bin-log 的过期时间,可以用下面命令删除超过 7 天的 log
PURGE MASTER LOGS BEFORE DATE_SUB(CURRENT_DATE, INTERVAL 7 DAY);