核心命令总结:登录MySQL:mysql -u root -p;创建数据库:CREATE DATABASE mydb;选择数据库:USE mydb;创建表:CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50));插入数据:INSERT INTO users VALUES (1, '张三');查询数据:SELECT * FROM users;更新数据:UPDATE users SET name='李四' WHERE id=1;删除数据:DELETE FROM users WHERE id=1;优化查询:EXPLAIN SELECT * FROM users;创建索引:CREATE INDEX idx_name ON users(name);查看进程:SHOW PROCESSLIST;杀进程:KILL 123;备份:mysqldump -u root -p mydb > backup.sql;恢复:mysql -u root -p mydb < backup.sql。这些命令让你轻松管理数据库并优化效率。
安装MySQL
在Linux下安装MySQL,首先更新系统包:sudo apt update,然后安装:sudo apt install mysql-server。安装完成后,启动服务:sudo systemctl start mysql,设置开机自启:sudo systemctl enable mysql。安全配置:sudo mysql_secure_installation,按照提示设置root密码并移除匿名用户。
基本连接与管理
连接MySQL:mysql -h localhost -u root -p 输入密码后进入mysql>提示符。显示所有数据库:SHOW DATABASES;创建数据库:CREATE DATABASE testdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;使用数据库:USE testdb;删除数据库:DROP DATABASE testdb;显示表:SHOW TABLES;查看表结构:DESCRIBE tablename;
数据操作命令
插入数据:INSERT INTO table_name (column1, column2) VALUES (value1, value2); 查询:SELECT column1, column2 FROM table_name WHERE condition; 更新:UPDATE table_name SET column1 = value1 WHERE condition; 删除:DELETE FROM table_name WHERE condition; 清空表:TRUNCATE TABLE table_name; 这些是CRUD核心。
用户与权限管理
创建用户:CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password'; 授予权限:GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost'; 刷新权限:FLUSH PRIVILEGES; 查看用户:SELECT user, host FROM mysql.user; 删除用户:DROP USER 'newuser'@'localhost';
查询优化技巧
使用EXPLAIN分析查询:EXPLAIN SELECT * FROM users WHERE name='张三'; 添加索引:ALTER TABLE users ADD INDEX idx_name (name); 避免SELECT *,指定字段;使用LIMIT限制结果;复合索引优化多条件查询;定期优化表:OPTIMIZE TABLE users; 查看慢查询日志:slow_query_log=1;
备份与恢复
逻辑备份:mysqldump -u root -p --databases mydb > mydb.sql;全库备份:mysqldump -u root -p --all-databases > all.sql;恢复:mysql -u root -p < mydb.sql;物理备份用mysqldump --single-transaction;定时备份用crontab:0 2 * * * mysqldump -u root -p密码 db > /backup/db_$(date +%F).sql;
性能监控
查看状态:SHOW STATUS LIKE 'Threads_connected'; 查看变量:SHOW VARIABLES LIKE 'max_connections'; 进程列表:SHOW PROCESSLIST; 杀掉卡住进程:KILL id; 表状态:SHOW TABLE STATUS; 索引信息:SHOW INDEX FROM table_name; 使用mysqladmin监控:mysqladmin -u root -p extended-status;
FAQ
Q: 如何忘记MySQL root密码?
A: 停止服务sudo systemctl stop mysql,重启跳过授权mysqld_safe --skip-grant-tables &,登录mysql,UPDATE mysql.user SET authentication_string=PASSWORD('newpass') WHERE User='root'; FLUSH PRIVILEGES; 重启正常。
Q: 查询很慢怎么优化?
A: 加索引,用EXPLAIN检查,避免隐式转换,优化JOIN,用覆盖索引。
Q: MySQL占用内存高?
A: 调innodb_buffer_pool_size,设置max_connections合适值,检查慢查询。
Q: 如何远程连接MySQL?
A: GRANT ALL ON *.* TO 'user'@'%' IDENTIFIED BY 'pass'; 编辑my.cnf bind-address=0.0.0.0,重启防火墙开放3306。