当前位置:首页 > Linux > 正文

Linux如何登录MySQL?

在Linux终端中,输入命令“mysql -u 用户名 -p”登录MySQL,系统会提示输入密码,确保MySQL服务已启动。

基础登录方法(命令行)

使用密码直接登录

mysql -u 用户名 -p

  • 步骤说明
    1. 输入命令后按回车,系统提示 Enter password:。
    2. 手动输入密码(输入时密码不可见),成功后进入MySQL交互界面。
    3. 退出时输入 exit 或 q。
  • 示例(用户名为 root): mysql -u root -p

指定主机和端口

mysql -u 用户名 -p -h 主机地址 -P 端口号

  • 适用场景:连接远程MySQL服务器(如云数据库)。
  • 示例(连接IP为 168.1.100 的3307端口): mysql -u admin -p -h 192.168.1.100 -P 3307


安全登录实践

避免密码暴露(使用配置⽂件)

创建 ~/.my.cnf 文件存储凭据,避免命令行记录密码:

Linux如何登录MySQL? 第1张

Linux如何登录MySQL? 第2张

[client] user = 你的用户名 password = 你的密码 host = 主机地址(可选) port = 端口(可选)

操作步骤

Linux如何登录MySQL? 第3张

  1. 生成配置文件并设置权限: touch ~/.my.cnf chmod 600 ~/.my.cnf # 限制仅当前用户可读 nano ~/.my.cnf # 编辑文件填入上述内容
  2. 直接登录无需输密码: mysql # 自动读取配置

使用登录路径(MySQL 5.6+)

通过 mysql_config_editor 加密存储凭据:

mysql_config_editor set --login-path=别名 --user=用户名 --host=主机 --port=端口 --password

  • 执行后输入密码,登录时调用: mysql --login-path=别名


常见问题解决

错误:ERROR 1045 (28000): Access denied

  • 原因:用户名/密码错误、权限不足。
  • 解决方案
    1. 检查密码大小写及特殊字符。
    2. 确认用户是否有远程访问权限(本地登录后执行): GRANT ALL PRIVILEGES ON *.* TO '用户名'@'%' IDENTIFIED BY '密码'; FLUSH PRIVILEGES;

错误:ERROR 2002 (HY000): Can't connect to local MySQL server

  • 原因:MySQL服务未启动。
  • 解决方案: sudo systemctl start mysql # Ubuntu/Debian sudo systemctl start mysqld # CentOS/RHEL

忘记root密码

  1. 停止MySQL服务: sudo systemctl stop mysql
  2. 启动无权限验证模式: sudo mysqld_safe --skip-grant-tables &
  3. 登录并重置密码: UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root'; FLUSH PRIVILEGES;
  4. 重启MySQL服务。


安全建议

  1. 禁用root远程登录:创建普通用户并授权,避免直接使用root。
  2. 强密码策略:密码长度≥12位,包含大小写字母、数字、符号。
  3. 防火墙限制:仅允许可信IP访问MySQL端口(默认3306): sudo ufw allow from 可信IP to any port 3306
  4. 定期更新:保持MySQL版本为最新安全补丁。


  • 基础登录:mysql -u 用户 -p 配合手动输入密码。
  • 安全实践:优先使用 ~/.my.cnf 或 mysql_config_editor 避免密码泄露。
  • 故障排查:检查服务状态、网络权限及用户凭证。
  • 生产环境:务必遵循最小权限原则,定期审计账户。

引用说明

本文操作基于MySQL 5.7+及主流Linux发行版(Ubuntu/CentOS),安全建议参考MySQL官方安全指南[1],密码重置步骤遵循Oracle官方文档[2]。

[1] MySQL 8.0 Security Guidelines

[2] Resetting the Root Password

0