菜鸟科技网

Linux系统下MySQL命令有哪些常用操作?

在Linux系统中,MySQL命令是管理和操作MySQL数据库的核心工具,涵盖了从服务管理到数据操作、用户权限控制等多个方面,以下将详细介绍常用的MySQL命令及其使用场景,帮助用户高效完成数据库相关任务。

Linux系统下MySQL命令有哪些常用操作?-图1
(图片来源网络,侵删)

MySQL服务的启动、停止和重启是基础操作,在大多数Linux发行版中,可以通过系统服务命令管理MySQL,例如使用systemctl start mysql启动服务,systemctl stop mysql停止服务,systemctl restart mysql重启服务,以及systemctl status mysql查看服务状态,若需要MySQL开机自启,可执行systemctl enable mysql;取消自启则使用systemctl disable mysql,对于部分旧版本系统,可能仍需使用service mysql start/stop/restart命令。

连接MySQL数据库是执行其他操作的前提,在命令行中,通过mysql -u 用户名 -p命令连接,系统会提示输入密码。mysql -u root -p用于以root用户登录,若连接远程数据库,可添加-h参数指定主机地址,如mysql -u root -p -h 192.168.1.100,登录成功后,可通过mysql -u 用户名 -p 数据库名直接连接到指定数据库,或使用mysql -u 用户名 -p -e "SQL语句"直接执行SQL命令并退出,适合脚本自动化操作。

数据库的管理包括创建、查看、删除和选择,创建数据库使用CREATE DATABASE 数据库名;,例如CREATE DATABASE mydb;,查看所有数据库可通过SHOW DATABASES;,若需判断数据库是否存在后再创建,可使用CREATE DATABASE IF NOT EXISTS 数据库名;,删除数据库则通过DROP DATABASE 数据库名;,需谨慎操作,因为此操作会删除数据库中的所有数据,使用数据库前需通过USE 数据库名;切换到目标数据库,例如USE mydb;

数据表的操作是数据库管理的核心,创建表时需定义表结构,包括字段名、数据类型和约束条件,

Linux系统下MySQL命令有哪些常用操作?-图2
(图片来源网络,侵删)
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL,
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

查看当前数据库中的所有表使用SHOW TABLES;,查看表结构可通过DESCRIBE 表名;SHOW COLUMNS FROM 表名;,修改表结构(如添加字段)使用ALTER TABLE 表名 ADD 字段名 数据类型;,删除字段则用ALTER TABLE 表名 DROP 字段名;,删除表通过DROP TABLE 表名;,若需判断表是否存在,可添加IF EXISTS选项。

数据的增删改查(CRUD)是最常用的操作,插入数据使用INSERT INTO 表名 (字段1, 字段2) VALUES (值1, 值2);,例如INSERT INTO users (username, email) VALUES ('john', 'john@example.com');,若需插入多条数据,可在VALUES后用逗号分隔多组值,查询数据通过SELECT 字段名 FROM 表名 WHERE 条件;,例如SELECT * FROM users WHERE id = 1;查询id为1的用户信息,更新数据使用UPDATE 表名 SET 字段1 = 新值 WHERE 条件;,例如UPDATE users SET email = 'new@example.com' WHERE id = 1;,删除数据则通过DELETE FROM 表名 WHERE 条件;,例如DELETE FROM users WHERE id = 1;,需注意不加WHERE条件会删除所有数据。

用户权限管理是数据库安全的关键,创建用户使用CREATE USER '用户名'@'主机' IDENTIFIED BY '密码';,例如CREATE USER 'admin'@'localhost' IDENTIFIED BY 'password123';,授权通过GRANT 权限列表 ON 数据库名.表名 TO '用户名'@'主机';实现,例如GRANT SELECT, INSERT ON mydb.* TO 'admin'@'localhost';表示授予用户对mydb数据库所有表的查询和插入权限,撤销权限使用REVOKE 权限 ON 数据库名.表名 FROM '用户名'@'主机';,刷新权限使授权生效需执行FLUSH PRIVILEGES;,查看用户权限可通过SHOW GRANTS FOR '用户名'@'主机';

数据备份与恢复是保障数据安全的重要手段,备份数据库使用mysqldump -u 用户名 -p 数据库名 > 备份文件.sql;,例如mysqldump -u root -p mydb > mydb_backup.sql,备份所有数据库则添加--all-databases参数,恢复数据库时,需先创建空数据库,然后通过mysql -u 用户名 -p 数据库名 < 备份文件.sql导入数据,例如mysql -u root -p mydb < mydb_backup.sql

Linux系统下MySQL命令有哪些常用操作?-图3
(图片来源网络,侵删)

MySQL日志管理有助于排查问题,错误日志默认位于/var/log/mysql/error.log,可通过SHOW VARIABLES LIKE 'log_error';查看路径,查询日志记录所有SQL语句,启用方式为在配置文件中添加general_log = 1general_log_file = /var/log/mysql/mysql.log,慢查询日志记录执行时间超过阈值的SQL,通过slow_query_log = 1long_query_time = 2(单位秒)配置。

以下是MySQL常用命令的速查表:

操作分类 命令示例
服务管理 systemctl start mysqlsystemctl stop mysql
连接数据库 mysql -u root -pmysql -u root -p -h 192.168.1.100
数据库操作 CREATE DATABASE mydb;SHOW DATABASES;DROP DATABASE mydb;
表操作 CREATE TABLE users (...);SHOW TABLES;DESCRIBE users;
数据CRUD INSERT INTO users VALUES (...);SELECT * FROM users;
用户权限 CREATE USER 'admin'@'localhost' IDENTIFIED BY 'pass';
备份与恢复 mysqldump -u root -p mydb > backup.sqlmysql -u root -p mydb < backup.sql

相关问答FAQs

  1. Q: 忘记MySQL root密码时如何重置?
    A: 重置root密码需停止MySQL服务,然后以安全模式启动并跳过权限表,具体步骤:

    • 停止服务:systemctl stop mysql
    • 跳过权限表启动:mysqld_safe --skip-grant-tables &
    • 无密码登录MySQL:mysql -u root
    • 执行以下命令重置密码(MySQL 5.7+):
      UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root';
      FLUSH PRIVILEGES;
    • 重启MySQL服务:systemctl restart mysql
  2. Q: 如何优化MySQL查询性能?
    A: 优化查询性能可从以下方面入手:

    • 索引优化:为常用查询条件的字段添加索引,例如CREATE INDEX idx_email ON users(email);
    • SQL语句优化:避免使用SELECT *,只查询必要字段;减少子查询,使用JOIN替代;避免在WHERE子句中对字段进行函数操作。
    • 配置优化:调整innodb_buffer_pool_size(通常设为物理内存的50%-70%)、max_connections等参数。
    • 定期维护:执行ANALYZE TABLE 表名;更新表统计信息,使用OPTIMIZE TABLE 表名;清理碎片。
分享:
扫描分享到社交APP
上一篇
下一篇