本文为IT技术爱好者提供详细的服务器管理与操作系统知识,特别聚焦于Linux及其常用命令。我们将深入探讨Linux系统的操作技巧、服务器维护和优化方法,并汇总MySQL常用命令,帮助开发者提升数据库管理能力。无论是新手还是资深技术人员,了解这些基础和进阶命令对于提高工作效率、优化服务器性能至关重要。通过掌握这些命令,你将能够更好地管理Linux服务器,并实现数据库操作的自动化和高效管理。
mysql [OPTIONS]
mysql -uroot -p
选项 | 说明 | 示例 |
---|---|---|
-u | 指定用户名 | -u root |
-p | 提示输入密码(密码可跟在后面但不安全) | -p1234 或 -p |
-h | 指定主机名(默认 localhost) | -h 192.168.1.100 |
-P | 指定端口(默认 3306) | -P 3307 |
--ssl | 启用 SSL 安全连接 | --ssl |
--socket | 指定套接字文件 | --socket=/tmp/mysql.sock |
--database | 登录后直接使用指定数据库 | --database=testdb |
SQL> exit;
或:
SQL> quit;
show databases;
CREATE DATABASE 数据库名 [OPTIONS];
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
选项 | 说明 | 示例 |
---|---|---|
DEFAULT CHARACTER SET | 设置数据库的默认字符集 | DEFAULT CHARACTER SET utf8mb4 |
DEFAULT COLLATE | 设置数据库的排序规则(与字符集匹配) | DEFAULT COLLATE utf8mb4_general_ci |
drop databases 数据库名;
USE 数据库名;
use mysql;
SELECT DATABASE();
SELECT table_schema AS 数据库名,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 大小_MB
FROM information_schema.tables
GROUP BY table_schema;
SHOW TABLES;
DESC 表名;
或:
SHOW COLUMNS FROM 表名;
CREATE TABLE 表名 (
列名 数据类型 [约束条件],
...
) [OPTIONS];
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
选项 | 说明 | 示例 |
---|---|---|
ENGINE | 设置存储引擎(如 InnoDB、MyISAM) | ENGINE=InnoDB |
DEFAULT CHARSET | 设置表的默认字符集 | DEFAULT CHARSET=utf8mb4 |
AUTO_INCREMENT | 指定自增主键 | id INT AUTO_INCREMENT PRIMARY KEY |
SHOW CREATE TABLE 表名;
ALTER TABLE 表名 ADD 列名 数据类型 [位置];
位置:FIRST(在最前),AFTER 列名(在指定列后)。
ALTER TABLE 表名 MODIFY 列名 数据类型;
ALTER TABLE 表名 DROP 列名;
ALTER TABLE 表名 CHANGE 原列名 新列名 数据类型;
DROP TABLE 表名;
TRUNCATE TABLE 表名;
INSERT INTO 表名 (列名1, 列名2, ...) VALUES (值1, 值2, ...);
INSERT INTO users (name, email) VALUES ('Alice', 'liyb@example.com');
INSERT INTO 表名 (列名1, 列名2) VALUES
(值1, 值2),
(值3, 值4),
(值5, 值6);
SELECT 列名1, 列名2, ... FROM 表名 [WHERE 条件] [ORDER BY 列名 ASC|DESC] [LIMIT 偏移量, 行数];
SELECT * FROM users WHERE email LIKE '%example.com' ORDER BY created_at DESC LIMIT 10;
常用子句:
子句 | 说明 | 示例 |
---|---|---|
WHERE | 指定条件 | WHERE age > 30 |
ORDER BY | 排序结果集 | ORDER BY name ASC |
LIMIT | 限制返回行数,支持偏移量 | LIMIT 5 OFFSET 10 |
GROUP BY | 按列分组 | GROUP BY department |
HAVING | 筛选分组结果 | HAVING COUNT(*) > 1 |
UPDATE 表名 SET 列名1=值1, 列名2=值2 WHERE 条件;
示例:
UPDATE users SET email='new_email@example.com' WHERE name='Alice';
DELETE FROM 表名 WHERE 条件;
DELETE FROM users WHERE id=10;
创建用户
CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'mypassword';
参数 | 说明 | 示例 |
---|---|---|
'用户名' | 用户名 | 'testuser' |
'主机' | 用户允许访问的主机(% 表示任意主机) | 'localhost' 或 '%' |
'密码' | 用户密码 | 'password123' |
ALTER USER '用户名'@'主机' IDENTIFIED BY '新密码';
ALTER USER 'testuser'@'localhost' IDENTIFIED BY 'newpassword123';
DROP USER '用户名'@'主机';
GRANT 权限列表 ON 数据库.表 TO '用户名'@'主机';
权限 | 说明 |
---|---|
ALL PRIVILEGES | 授予所有权限 |
SELECT | 允许读取表中的数据 |
INSERT | 允许向表中插入数据 |
UPDATE | 允许修改表中的数据 |
DELETE | 允许删除表中的数据 |
CREATE | 允许创建数据库和表 |
DROP | 允许删除数据库和表 |
GRANT SELECT, INSERT ON mydb.* TO 'testuser'@'localhost';
REVOKE 权限列表 ON 数据库.表 FROM '用户名'@'主机';
REVOKE INSERT ON mydb.* FROM 'testuser'@'localhost';
FLUSH PRIVILEGES;
EXPLAIN SELECT 查询语句;
EXPLAIN SELECT * FROM users WHERE email='test@example.com';
OPTIMIZE TABLE 表名;
SHOW VARIABLES LIKE 'slow_query_log';
SET GLOBAL slow_query_log=1;
CHECK TABLE 表名;
REPAIR TABLE 表名;