MySQL 数据库基础操作
安装与启动
MySQL可通过官方安装包或系统包管理器安装。Ubuntu/Debian使用apt install mysql-server,CentOS/RHEL使用yum install mysql-server。安装完成后,启动服务命令为systemctl start mysqld,设置开机自启systemctl enable mysqld。
安全初始化执行mysql_secure_installation,按提示设置root密码、移除匿名用户、禁止远程root登录等。验证安装成功使用mysql --version,登录数据库用mysql -u root -p。
数据库创建与管理
创建新数据库语法:
CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
查看所有数据库:
SHOW DATABASES;
删除数据库:
DROP DATABASE dbname;
切换当前数据库:
USE dbname;
用户与权限管理
创建用户并设置密码:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
授予权限(示例授予所有权限):
GRANT ALL PRIVILEGES ON dbname.* TO 'username'@'host';
刷新权限使设置生效:
FLUSH PRIVILEGES;
查看用户权限:
SHOW GRANTS FOR 'username'@'host';
表操作
创建表基本语法:
CREATE TABLE tablename (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
查看表结构:
DESCRIBE tablename;
修改表结构(添加列):
ALTER TABLE tablename ADD COLUMN email VARCHAR(100);
删除表:
DROP TABLE tablename;
数据增删改查
插入数据:
INSERT INTO tablename (name, email) VALUES ('John', 'john@example.com');
查询数据:
SELECT * FROM tablename WHERE name LIKE 'J%';
更新数据:
UPDATE tablename SET email = 'new@example.com' WHERE id = 1;
删除数据:
DELETE FROM tablename WHERE id = 1;
索引优化
创建索引加速查询:
CREATE INDEX idx_name ON tablename(name);
查看表索引:
SHOW INDEX FROM tablename;
复合索引创建:
CREATE INDEX idx_name_email ON tablename(name, email);
备份与恢复
使用mysqldump备份单个数据库:
mysqldump -u username -p dbname > backup.sql
备份所有数据库:
mysqldump -u username -p --all-databases > all_backup.sql
恢复数据库:
mysql -u username -p dbname < backup.sql
事务处理
开启事务执行多条SQL:
START TRANSACTION;
INSERT INTO orders VALUES(...);
UPDATE inventory SET quantity = quantity-1 WHERE product_id=123;
COMMIT;
出错时回滚:
ROLLBACK;
性能监控
查看当前连接:
SHOW PROCESSLIST;
查看服务器状态:
SHOW STATUS LIKE 'Threads_connected';
查看查询执行计划:
EXPLAIN SELECT * FROM tablename WHERE...;
远程连接配置
修改配置文件/etc/mysql/mysql.conf.d/mysqld.cnf,注释掉bind-address = 127.0.0.1或改为0.0.0.0。创建远程用户:
CREATE USER 'remote'@'%' IDENTIFIED BY 'password';
GRANT ALL ON dbname.* TO 'remote'@'%';
重启服务后可通过mysql -h host -u remote -p连接。
1379

被折叠的 条评论
为什么被折叠?



