mysql运维

(1)查看当前 MySQL 服务器状态和版本信息

1
mysql> status 或者 \s

(2)创建一个名为 house_market 的数据库,设置其默认字符集为 utf8mb4

1
mysql> CREATE DATABASE house_market CHARACTER SET utf8mb4;

(3)创建两个用户账号:house_admin(具有所有权限)和 house_viewer(只具有查询权限)

1
2
3
4
5
6
7
8
9
10
11
mysql> create user 'house_admin'@'%' identified by '123456';

mysql> grant all privileges on house_market.* to 'house_admin'@'%';

mysql> flush privileges;

mysql> create user 'house_viewer'@'%' identified by '123456';

mysql> grant select on house_market.* to 'house_viewer'@'%';

mysql> flush privileges;

(4)为 house_market 数据库创建一个定时备份计划,每天凌晨2点自动备份数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@master ~]# mkdir mysqlBackup
[root@master ~]# vi mysqlBackup.sh
#!/bin/bash

DB_NAME="house_market"
BACKUP_DIR="/root/mysqlBackup"
DATE=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="$BACKUP_DIR/$DB_NAME-$DATE.sql"

mysqldump -u root -p'123456' $DB_NAME > $BACKUP_FILE


[root@master ~]# chmod -x mysqlBackup.sh
[root@master ~]# crontab -e
0 2 * * * /root/mysqlBackup.sh
[root@master ~]# crontab -l
0 2 * * * /root/mysqlBackup.sh

[root@master ~]# sh mysqlBackup.sh
mysqldump: [Warning] Using a password on the command line interface can be insecure.
[root@master mysqlBackup]# ls
house_market-20250217194213.sql

(5)使用命令查看 MySQL 当前的最大连接数和缓存大小配置

1
2
3
mysql> show variables like 'max_connections';

mysql> show variables like 'query_cache_size';

(6)修改 MySQL 配置,将最大连接数设置为1000,查询缓存大小设置为 64MB

1
2
3
4
5
6
7
mysql> mysql> set global max_connections = 1000;

mysql> set global query_cache_size=64*1024*1024;

mysql> show variables like 'max_connections';

mysql> show variables like 'query_cache_size';

(7)查看 house_market 数据库中所有表的存储引擎类型

1
SHOW TABLE STATUS FROM house_market;

(8)创建一个名为 backup_user 的用户,只授予其备份相关的权限(BACKUP_ADMIN 和 RELOAD)

1
2
3
mysql> create user 'backup_user'@'%' identified by '123456';

mysql> grant BACKUP_ADMIN,RELOAD on house_market.* to 'backup_user'@'%';

(3)通过 root 用户登录 MySQL 数据库系统,查看 mysql 库下的所有表

1
mysql> show tables from mysql;

(5)创建数据库 education 并设置正确的字符集

1
2
mysql> create database education character set utf8mb4;
Query OK, 1 row affected (0.00 sec)

(6)授予 eduadmin 用户对学习数据库的查询权限

1
mysql> grant select on education.* to 'eduadmin'@'%';

(4)创建新的用户 bike_admin

1
mysql> create user 'bike_admin'@'%' identified by '123456';

(5)创建数据库 bike_data,并设置正确的字符集

1
mysql> create database bike_data character set utf8mb4;

(6)授予新用户查询数据和插入数据的权限

1
mysql> grant select, insert on *.* to 'bike_admin'@'%';

(1)配置 MySQL 服务器的最大连接数为 1000

1
mysql> set global max_connections = 1000;

(2)创建数据库 tourism 并设置默认字符集为 utf8mb4

1
mysql> create database tourism character set utf8mb4;

(3)创建一个名为 tourism_backup 的定时备份脚本,每天凌晨 2 点自动备份数据库 tourism

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/bash

db_name="tourism"
backup_dir="/opt/tourism_backup"
date=$(date +"%Y%m%d%H%M%S")
backup_file="$backup_dir/$db_name-$date.sql"

mysqldump -uroot -p'123456' $db_name > $backup_file



[root@master module]# chmod -x tourism_backup.sh
[root@master module]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@master module]# crontab -l
0 2 * * * /opt/module/tourism_backup.sh

(4)优化 MySQL 查询性能,开启慢查询日志,设置超过 3 秒的查询被记录

1
2
3
mysql> set global slow_query_log=1;

mysql> set global long_query_time=3;

(5)配置 MySQL 的 binlog 日志,设置过期时间为 7 天

1
mysql> set global expire_logs_days = 7;

(2)启用 MySQL 慢查询日志功能,设置慢查询阈值为 2 秒

1
2
3
mysql> set global slow_query_log = 1;

mysql> set global long_query_time = 2;

(3)创建名为 hadoop 的数据库用户,密码设置为 Hadoop@2025

1
mysql> create user 'hadoop'@'%' identified by 'Hadoop@2025';

(4)为 hadoop 用户授予 bigdata 数据库的 SELECT、INSERT 和 UPDATE 权限

1
2
3
mysql> grant select, insert, update on bigdata.* to 'hadoop'@'%';

mysql> flush privileges;

(5)创建名为 monitor 的监控专用用户,仅授予 PROCESS 和 SHOW DATABASES 权限

1
2
3
4
5
mysql> create user 'monitor'@'%' identified by '123456';

mysql> grant process, show databases on *.* to 'monitor'@'%';

mysql> flush privileges;

(6)使用 mysqldump 工具备份 bigdata 数据库,将备份文件保存为 bigdata_backup.sql

1
2
3
4
[root@master module]# mysqldump -uroot -p bigdata > bigdata_backup.sql
Enter password:
[root@master module]# ls
bigdata_backup.sql

(7)配置数据库字符集为 utf8mb4,并将默认排序规则设置为 utf8mb4_unicode_ci

1
2
3
mysql> set global character_set_server = 'utf8mb4';

mysql> set global collation_server = 'utf8mb4_unicode_ci';

(8)创建一个定时备份脚本,实现每天凌晨 2 点自动备份 bigdata 数据库到 /opt/backup 目录,并只保留最近 7 天的备份文件

1
2
3
4
5
6
7
8
9
#!/bin/bash
db_name="bigdata"
backup_dir="/opt/backup"
date=$(date +"%Y%m%d%H%M%S")
backup_file="$backup_dir/$db_name-$date.sql"

mysqldump -uroot -p'123456' $db_name > $backup_file

find "$backup_dir" -type f -name "${db_name}-*.sql" -mtime +7 -exec rm {} \;