安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 更新apt-get系统软件库
sudo apt-get update

# 安装Mysql数据库
# 若已提前准备好配置文件,可直接跳到还原备份文件步骤
sudo apt-get install mysql-server

# 这时候登录数据库,查看 lower_case_table_names 属性时,值为0,会区分大小写
# 停止Mysql服务
systemctl stop mysql

# 备份配置文件
sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.backup

# 卸载已安装的Mysql
sudo apt-get --purge autoremove mysql-server

# 删除安装目录 (data默认位置,如有重要数据注意备份)
sudo rm -rf /var/lib/mysql

# 还原配置文件
sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf.backup /etc/mysql/mysql.conf.d/mysqld.cnf

# 编辑配置文件 注意:新添加的文本要放到[mysqld]标签下,添加 lower_case_table_names=1
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf

# 再次执行安装命令
sudo apt-get install mysql-server

再次安装时,会提示配置文件已存在,是否覆盖(默认N不覆盖),至此,数据库安装完成。

登录数据库,查看设置结果。

1
2
3
4
# 当前没有密码
sudo mysql -u root -p
# 查询lower_case_table_names属性,结果如下
select @@lower_case_table_names;

设置mysql为开机自启

1
sudo systemctl enable mysql

修改密码

1
2
3
4
5
6
7
8
9
10
11
# 第一次登录没有密码,直接回车
mysql -u root -p

# 切换数据库
use mysql;

# 更改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

# 刷新权限
FLUSH PRIVILEGES;

设置远程访问登录

1
2
3
4
5
6
7
8
#进入mysql
use mysql;

#设置登录ip为%通配符,取消登录ip限制,原来的localhost代表只能在本机登录。
update user set host = '%' where user = 'root' and host = 'localhost';

#刷新权限
FLUSH PRIVILEGES;

修改配置文件

修改mysql配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,取消对远程ip为127.0.0.1的绑定,不取消127.0.0.1的绑定那么只有本机才能访问。

在mysqld.cnf文件里将bind-address、mysqlx-bind-address这两行注释掉。

img

1
2
#重启mysql
service mysql restart

数据库定时备份

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
# 配置变量
DB_USER="root"
DB_PASS="weiyuan@888"
DB_NAME="item"
BACKUP_DIR="/usr/local/cron/mysql-bak/db-file"
DATE=$(date +\%F) # 格式化日期为 YYYY-MM-DD
BACKUP_FILE="${BACKUP_DIR}/backup_${DB_NAME}_${DATE}.sql"

# 执行备份
docker exec -i mysql mysqldump -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${BACKUP_FILE}
# mysqldump -u ${DB_USER} -p${DB_PASS} ${DB_NAME} > ${BACKUP_FILE}

# 如果备份成功,打印信息
if [ $? -eq 0 ]; then
echo "Backup of ${DB_NAME} completed successfully at ${DATE}" >> ${BACKUP_DIR}/backup.log
else
echo "Backup of ${DB_NAME} failed at ${DATE}" >> ${BACKUP_DIR}/backup.log
fi

# 删除文件
find ${BACKUP_DIR} -type f -name "*.sql" -mtime +30 -exec rm {} \;

配置定时任务

1
2
3
4
crontab -e

# 输入
0 */12 * * * /usr/local/cron/bak-sh/bak-item.sh