切换导航
人间一铺后台系统
Ubuntu 22
Ufw 配置防火墙
Lnmp 多版本PHP
Nginx 安装及配置
Mysql 安装及配置
Php 安装及配置
Redis 安装及配置
Svn 安装及配置
Frp 安装及配置
OpenVPN 安装及配置
搜索结果
没有相关内容~~
Mysql 安装及配置
最新修改于
2025-12-26 09:32
## 方法一:使用 APT 安装 MySQL(推荐) ### 1. 安装 MySQL Server ```bash # 更新包列表 sudo apt update # 安装 MySQL Server sudo apt install mysql-server # 安装 MySQL 客户端(可选) sudo apt install mysql-client # 安装开发库(编程需要) sudo apt install libmysqlclient-dev ``` ### 2. 安全配置 ```bash # 运行安全配置脚本 sudo mysql_secure_installation ``` 该脚本会引导您: - 设置 root 密码 - 移除匿名用户 - 禁止 root 远程登录 - 移除测试数据库 - 重新加载权限表 ## 方法二:安装指定版本 MySQL ### MySQL 8.0 安装 ```bash # 添加 MySQL 官方仓库 wget https://dev.mysql.com/get/mysql-apt-config_0.8.24-1_all.deb sudo dpkg -i mysql-apt-config_0.8.24-1_all.deb # 更新并安装 sudo apt update sudo apt install mysql-server ``` ## 基本管理命令 ### 服务管理 ```bash # 启动 MySQL sudo systemctl start mysql # 停止 MySQL sudo systemctl stop mysql # 重启 MySQL sudo systemctl restart mysql # 查看状态 sudo systemctl status mysql # 设置开机自启 sudo systemctl enable mysql # 查看服务日志 sudo journalctl -u mysql ``` ## 连接到 MySQL ### 1. 使用 root 用户登录 ```bash # 方式1:使用 sudo(如果密码为空) sudo mysql # 方式2:使用密码登录 mysql -u root -p # 方式3:指定主机 mysql -h localhost -u root -p ``` ### 2. 基本 SQL 操作 ```sql -- 查看所有数据库 SHOW DATABASES; -- 创建数据库 CREATE DATABASE mydatabase; -- 使用数据库 USE mydatabase; -- 查看当前数据库中的表 SHOW TABLES; -- 创建表 CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 插入数据 INSERT INTO users (username, email) VALUES ('john', 'john@example.com'); -- 查询数据 SELECT * FROM users; -- 更新数据 UPDATE users SET username = 'john_doe' WHERE id = 1; -- 删除数据 DELETE FROM users WHERE id = 1; -- 删除表 DROP TABLE users; -- 删除数据库 DROP DATABASE mydatabase; ``` ## 用户和权限管理 ### 1. 创建新用户 ```sql -- 创建用户并设置密码 CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; -- 创建允许远程连接的用户 CREATE USER 'remoteuser'@'%' IDENTIFIED BY 'password'; -- 查看所有用户 SELECT user, host FROM mysql.user; ``` ### 2. 授予权限 ```sql -- 授予所有权限给数据库 GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'localhost'; -- 授予特定权限 GRANT SELECT, INSERT, UPDATE ON mydatabase.* TO 'newuser'@'localhost'; -- 授予所有数据库的权限 GRANT ALL PRIVILEGES ON *.* TO 'adminuser'@'localhost'; -- 刷新权限 FLUSH PRIVILEGES; ``` ### 3. 撤销权限 ```sql REVOKE ALL PRIVILEGES ON mydatabase.* FROM 'user'@'localhost'; REVOKE INSERT ON mydatabase.* FROM 'user'@'localhost'; FLUSH PRIVILEGES; ``` ### 4. 修改用户密码 ```sql ALTER USER 'username'@'localhost' IDENTIFIED BY 'newpassword'; ``` ### 5. 删除用户 ```sql DROP USER 'username'@'localhost'; ``` ## 配置文件管理 ### 1. 主要配置文件位置 ```bash # 主配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf # 客户端配置文件 /etc/mysql/mysql.conf.d/mysql.cnf # 包含目录 /etc/mysql/conf.d/ # 数据目录 /var/lib/mysql/ # 日志文件 /var/log/mysql/error.log ``` ### 2. 常用配置修改 ```bash # 编辑配置文件 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` 配置示例: ```ini [mysqld] # 绑定地址(允许远程连接) bind-address = 0.0.0.0 # MySQL 端口 port = 3306 # 数据目录 datadir = /var/lib/mysql # 字符集 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci # 最大连接数 max_connections = 100 # 查询缓存 query_cache_size = 16M query_cache_type = 1 # 缓冲池大小(通常是内存的70-80%) innodb_buffer_pool_size = 1G # 日志 slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 2 # 时区设置 default_time_zone = '+08:00' ``` ## 备份与恢复 ### 1. 使用 mysqldump 备份 ```bash # 备份单个数据库 mysqldump -u root -p mydatabase > backup.sql # 备份所有数据库 mysqldump -u root -p --all-databases > all_backup.sql # 备份特定表 mysqldump -u root -p mydatabase table1 table2 > tables_backup.sql # 压缩备份 mysqldump -u root -p mydatabase | gzip > backup.sql.gz # 带时间戳的备份 mysqldump -u root -p mydatabase > backup_$(date +%Y%m%d_%H%M%S).sql ``` ### 2. 恢复数据库 ```bash # 恢复数据库 mysql -u root -p mydatabase $BACKUP_DIR/full_backup_$DATE.sql.gz # 保留最近7天的备份 find $BACKUP_DIR -name "*.sql.gz" -mtime +7 -delete ``` 设置定时任务: ```bash # 编辑 crontab sudo crontab -e # 每天凌晨2点备份 0 2 * * * /usr/local/bin/mysql_backup.sh ``` ## 性能优化 ### 1. 查看状态信息 ```sql -- 查看运行状态 SHOW STATUS; -- 查看变量设置 SHOW VARIABLES; -- 查看进程列表 SHOW PROCESSLIST; -- 查看存储引擎状态 SHOW ENGINE INNODB STATUS; -- 查看表状态 SHOW TABLE STATUS FROM mydatabase; ``` ### 2. 性能分析 ```sql -- 启用慢查询日志(需在配置文件中设置) SET GLOBAL slow_query_log = 'ON'; -- 分析查询性能 EXPLAIN SELECT * FROM users WHERE username = 'john'; -- 查看索引 SHOW INDEX FROM users; ``` ### 3. 常用优化命令 ```sql -- 优化表(MyISAM) OPTIMIZE TABLE users; -- 分析表(更新索引统计) ANALYZE TABLE users; -- 修复表 REPAIR TABLE users; -- 检查表 CHECK TABLE users; ``` ## 远程连接配置 ### 1. 允许远程访问 ```bash # 编辑配置文件 sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # 修改 bind-address bind-address = 0.0.0.0 ``` ### 2. 创建远程用户 ```sql CREATE USER 'remote'@'%' IDENTIFIED BY 'secure_password'; GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` ### 3. 开放防火墙端口 ```bash sudo ufw allow 3306/tcp sudo ufw reload ``` ## 故障排查 ### 1. 查看日志 ```bash # 错误日志 sudo tail -f /var/log/mysql/error.log # 慢查询日志 sudo tail -f /var/log/mysql/slow.log # 通用查询日志 sudo tail -f /var/log/mysql/mysql.log ``` ### 2. 常见问题解决 **问题1:忘记 root 密码** ```bash # 停止 MySQL sudo systemctl stop mysql # 启动 MySQL 跳过权限检查 sudo mysqld_safe --skip-grant-tables & # 连接到 MySQL mysql -u root # 重置密码(在 MySQL 中) FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword'; FLUSH PRIVILEGES; EXIT; # 重启 MySQL sudo systemctl restart mysql ``` **问题2:无法启动** ```bash # 检查错误日志 sudo tail -f /var/log/mysql/error.log # 检查权限 sudo chown -R mysql:mysql /var/lib/mysql # 检查端口占用 sudo netstat -tlnp | grep 3306 ``` **问题3:连接数过多** ```sql -- 查看当前连接数 SHOW STATUS LIKE 'Threads_connected'; -- 查看最大连接数 SHOW VARIABLES LIKE 'max_connections'; -- 终止特定连接 KILL [connection_id]; ``` ## 卸载 MySQL ```bash # 停止服务 sudo systemctl stop mysql # 卸载 MySQL sudo apt purge mysql-server mysql-client mysql-common # 删除配置文件和数据 sudo rm -rf /etc/mysql /var/lib/mysql # 清理依赖包 sudo apt autoremove sudo apt autoclean ``` ## 实用工具 ### 1. MySQL Workbench(图形界面) ```bash sudo snap install mysql-workbench-community # 或 sudo apt install mysql-workbench ``` ### 2. phpMyAdmin(Web界面) ```bash sudo apt install phpmyadmin # 访问:http://your-server/phpmyadmin ``` ### 3. 监控工具 ```bash # 安装 mytop(类似 top 的 MySQL 监控) sudo apt install mytop mytop -u root -p ``` ### 4. Percona Toolkit(高级工具) ```bash wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb sudo apt update sudo apt install percona-toolkit ```
请输入访问密码
开始访问