菜鸟科技网

Linux下如何执行mysql命令?

在Linux系统中执行MySQL命令是数据库管理和开发中的常见操作,涵盖了从基本连接、数据查询到高级权限管理等多个场景,以下是详细的操作指南和注意事项,帮助用户高效、安全地完成MySQL相关任务。

Linux下如何执行mysql命令?-图1
(图片来源网络,侵删)

MySQL命令行连接基础

在Linux终端执行MySQL命令前,需确保系统已安装MySQL客户端,通过mysql --version可检查安装情况,连接MySQL服务器的基本语法为:

mysql -h主机名 -u用户名 -p密码

参数说明:

  • -h:指定MySQL服务器地址,本地连接可省略或使用localhost
  • -u:登录用户名,默认为root
  • -p:提示输入密码,更安全的方式是直接在命令后不加空格输入密码(如-p123456),但可能被历史命令记录

连接本地MySQL的常用命令为:

mysql -u root -p

执行后会提示输入密码,输入正确后即可进入MySQL命令行界面。

Linux下如何执行mysql命令?-图2
(图片来源网络,侵删)

常用MySQL操作命令

进入MySQL后,可通过以下命令进行数据库操作:

数据库管理

  • 查看所有数据库
    SHOW DATABASES;
  • 创建数据库
    CREATE DATABASE 数据库名 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  • 切换数据库
    USE 数据库名;
  • 删除数据库
    DROP DATABASE 数据库名;

表格操作

  • 查看当前数据库的所有表
    SHOW TABLES;
  • 创建表(以用户表为例):
    CREATE TABLE users (
        id INT AUTO_INCREMENT PRIMARY KEY,
        username VARCHAR(50) NOT NULL,
        email VARCHAR(100) UNIQUE,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    );
  • 查看表结构
    DESCRIBE users;
  • 删除表
    DROP TABLE users;

数据操作(CRUD)

  • 插入数据
    INSERT INTO users (username, email) VALUES ('user1', 'user1@example.com');
  • 查询数据
    SELECT * FROM users WHERE username = 'user1';
  • 更新数据
    UPDATE users SET email = 'new_email@example.com' WHERE id = 1;
  • 删除数据
    DELETE FROM users WHERE id = 1;

高级操作技巧

执行SQL脚本文件

若需批量执行SQL脚本(如backup.sql),可通过以下方式:

mysql -u root -p 数据库名 < backup.sql

或进入MySQL后使用:

SOURCE /path/to/backup.sql;

导出数据库

使用mysqldump工具可导出数据库结构或数据:

Linux下如何执行mysql命令?-图3
(图片来源网络,侵删)
# 导出整个数据库(结构和数据)
mysqldump -u root -p 数据库名 > backup.sql
# 仅导出结构
mysqldump -u root -p -d 数据库名 > structure.sql
# 导出特定表
mysqldump -u root -p 数据库名 表名1 表名2 > tables_backup.sql

用户与权限管理

  • 创建用户并授权
    CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
    GRANT ALL PRIVILEGES ON 数据库名.* TO 'newuser'@'localhost';
    FLUSH PRIVILEGES;
  • 查看用户权限
    SHOW GRANTS FOR 'newuser'@'localhost';
  • 撤销权限
    REVOKE ALL PRIVILEGES ON 数据库名.* FROM 'newuser'@'localhost';

常见问题与解决方案

  1. 连接被拒绝错误(Access denied)

    • 检查用户名、密码是否正确
    • 确认用户主机权限(如'user'@'%'允许所有主机,'user'@'localhost'仅允许本地)
    • 检查MySQL服务是否运行(systemctl status mysql
  2. 中文乱码问题

    • 创建数据库时指定字符集(如utf8mb4
    • 检查MySQL配置文件my.cnf中的字符集设置:
      [client]
      default-character-set=utf8mb4
      [mysql]
      default-character-set=utf8mb4
      [mysqld]
      character-set-server=utf8mb4
      collation-server=utf8mb4_unicode_ci

相关操作速查表

操作类型 命令示例
连接MySQL mysql -u root -p
查看数据库 SHOW DATABASES;
创建数据库 CREATE DATABASE db_name CHARACTER SET utf8mb4;
选择数据库 USE db_name;
创建表 CREATE TABLE table_name (id INT PRIMARY KEY, name VARCHAR(50));
插入数据 INSERT INTO table_name (name) VALUES ('value');
查询数据 SELECT * FROM table_name WHERE condition;
更新数据 UPDATE table_name SET column='value' WHERE id=1;
删除数据 DELETE FROM table_name WHERE id=1;
导出数据库 mysqldump -u root -p db_name > backup.sql
执行SQL脚本 mysql -u root -p db_name < script.sql

FAQs

问题1:如何在Linux下不输入密码直接连接MySQL?
解答:可通过配置MySQL用户配置文件(~/.my.cnf)实现,添加以下内容:

[client]
user = root
password = your_password

并设置文件权限为600chmod 600 ~/.my.cnf),这样执行mysql命令时会自动读取配置文件中的凭据。

问题2:如何查看MySQL的慢查询日志?
解答:首先确保MySQL配置中开启了慢查询日志(在my.cnf中添加):

slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2

然后使用以下命令查看日志内容:

tail -f /var/log/mysql/mysql-slow.log

或通过mysqldumpslow工具分析慢查询:

mysqldumpslow -s t /var/log/mysql/mysql-slow.log

参数-s t表示按查询时间排序。

分享:
扫描分享到社交APP
上一篇
下一篇