基础登录方法(命令行)
使用密码直接登录
mysql -u 用户名 -p
- 步骤说明:
- 输入命令后按回车,系统提示
Enter password:
。 - 手动输入密码(输入时密码不可见),成功后进入MySQL交互界面。
- 退出时输入
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
文件存储凭据,避免命令行记录密码:
[client] user = 你的用户名 password = 你的密码 host = 主机地址(可选) port = 端口(可选)
操作步骤:
- 生成配置文件并设置权限:
touch ~/.my.cnf chmod 600 ~/.my.cnf # 限制仅当前用户可读 nano ~/.my.cnf # 编辑文件填入上述内容
- 直接登录无需输密码:
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
- 原因:用户名/密码错误、权限不足。
- 解决方案:
- 检查密码大小写及特殊字符。
- 确认用户是否有远程访问权限(本地登录后执行):
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密码
- 停止MySQL服务:
sudo systemctl stop mysql
- 启动无权限验证模式:
sudo mysqld_safe --skip-grant-tables &
- 登录并重置密码:
UPDATE mysql.user SET authentication_string=PASSWORD('新密码') WHERE User='root'; FLUSH PRIVILEGES;
- 重启MySQL服务。
安全建议
- 禁用root远程登录:创建普通用户并授权,避免直接使用root。
- 强密码策略:密码长度≥12位,包含大小写字母、数字、符号。
- 防火墙限制:仅允许可信IP访问MySQL端口(默认3306):
sudo ufw allow from 可信IP to any port 3306
- 定期更新:保持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
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/27737.html