MySQL数据库管理是确保数据库系统稳定运行的关键任务。本章将详细介绍MySQL服务器的启动与关闭、用户权限管理、配置文件设置以及常用管理命令。
首先,我们需要通过以下命令来检查MySQL服务器是否启动:
ps -ef | grep mysqld
如果MySQL已经启动,以上命令将输出mysql进程列表。
如果MySQL未启动,你可以使用以下命令来启动mysql服务器:
cd /usr/bin
./safe_mysqld &
# 启动MySQL服务
sudo systemctl start mysqld
# 停止MySQL服务
sudo systemctl stop mysqld
# 重启MySQL服务
sudo systemctl restart mysqld
# 查看MySQL服务状态
sudo systemctl status mysqld
# 设置MySQL开机自启
sudo systemctl enable mysqld
如果你想关闭目前运行的MySQL服务器,可以执行以下命令:
cd /usr/bin
./mysqladmin -u root -p shutdown
Enter password: ******
mysqladmin shutdown命令来安全关闭MySQL服务器,这样可以确保所有数据都正确写入磁盘。
早期版本的MySQL可以通过直接操作mysql数据库中的user表来添加用户:
-- 登录MySQL
mysql -u root -p
Enter password:*******
-- 切换到mysql数据库
USE mysql;
-- 插入新用户记录
INSERT INTO user
(host, user, password, select_priv, insert_priv, update_priv)
VALUES ('localhost', 'guest', PASSWORD('guest123'), 'Y', 'Y', 'Y');
-- 刷新权限
FLUSH PRIVILEGES;
-- 验证用户创建
SELECT host, user, password FROM user WHERE user = 'guest';
-- 创建新用户
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
-- 授予权限
GRANT privilege_type ON database_name.table_name TO 'username'@'host';
-- 示例:创建用户zara并授予对TUTORIALS数据库的所有权限
CREATE USER 'zara'@'localhost' IDENTIFIED BY 'zara123';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP
ON TUTORIALS.*
TO 'zara'@'localhost';
-- 刷新权限
FLUSH PRIVILEGES;
MySQL提供了多种权限来控制用户对数据库的访问:
-- 查看用户权限
SHOW GRANTS FOR 'username'@'host';
-- 撤销用户权限
REVOKE privilege_type ON database_name.table_name FROM 'username'@'host';
-- 删除用户
DROP USER 'username'@'host';
MySQL的主要配置文件通常位于:
[mysqld]
# 基础设置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# 网络设置
port=3306
bind-address=127.0.0.1
# 字符集设置
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 日志设置
log-error=/var/log/mysqld.log
slow_query_log=1
slow_query_log_file=/var/log/mysql-slow.log
long_query_time=2
# 缓冲池设置(根据内存调整)
innodb_buffer_pool_size=1G
# 连接设置
max_connections=151
max_connect_errors=100000
[mysql.server]
user=mysql
basedir=/var/lib
[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
[client]
default-character-set=utf8mb4
-- 选择数据库
USE database_name;
-- 显示所有数据库
SHOW DATABASES;
-- 显示当前数据库的所有表
SHOW TABLES;
-- 显示表结构
SHOW COLUMNS FROM table_name;
DESCRIBE table_name;
-- 显示表索引信息
SHOW INDEX FROM table_name;
-- 显示表状态信息
SHOW TABLE STATUS LIKE 'table_name'\G
-- 显示服务器状态
SHOW STATUS;
-- 显示系统变量
SHOW VARIABLES;
-- 显示当前进程
SHOW PROCESSLIST;
-- 显示引擎状态
SHOW ENGINE INNODB STATUS;
-- 显示主从复制状态
SHOW SLAVE STATUS\G
# 备份数据库
mysqldump -u username -p database_name > backup_file.sql
# 恢复数据库
mysql -u username -p database_name < backup_file.sql
# 备份所有数据库
mysqldump -u username -p --all-databases > all_backup.sql
mysql_secure_installation命令可以帮助你提高新安装MySQL服务器的安全性。