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

Linux如何登录MySQL?

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

基础登录方法(命令行)

使用密码直接登录

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

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

操作步骤

  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.cnfmysql_config_editor 避免密码泄露。
  • 故障排查:检查服务状态、网络权限及用户凭证。
  • 生产环境:务必遵循最小权限原则,定期审计账户。

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

0