![由于服务器主机名绑定地址无效而导致对 mysql 的访问被拒绝](https://linux22.com/image/602500/%E7%94%B1%E4%BA%8E%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%BB%E6%9C%BA%E5%90%8D%E7%BB%91%E5%AE%9A%E5%9C%B0%E5%9D%80%E6%97%A0%E6%95%88%E8%80%8C%E5%AF%BC%E8%87%B4%E5%AF%B9%20mysql%20%E7%9A%84%E8%AE%BF%E9%97%AE%E8%A2%AB%E6%8B%92%E7%BB%9D.png)
我无法使用终端登录 mysql。
[root@fst mysql]# mysql -h localhost -u admin -p
Enter password:
ERROR 1045 (28000): Access denied for user 'admin'@'localhost' (using password: YES)
我确信我的密码正确。当我检查状态时,mysql 也在运行。mysql 数据库也存在于目录 /var/lib/mysql/ 中。主机 host.myi、host.myd 和 host.frm 都存在。
顺便说一下,这与我之前的问题有关MySQL 服务器退出而不更新 PID 文件。最初,问题出现在根目录已满时。为了能够登录 directadmin 并启动 mysql,我添加了 /var/lib/mysql/ 到 /home/mysql 的软链接。因为我的数据库占用了大部分根目录。根目录有 50Gb,/home 有 1.5Gb。不知何故 /var/lib/mysql/idbdata1 已损坏。所以我将它移到另一个位置。
现在,我可以启动 mysql 服务器,但无法登录。
以下是来自 myql 日志的内容。
121212 20:44:10 mysqld_safe mysqld from pid file /var/lib/mysql/fst.srv.net.pid ended
121212 20:44:10 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql
121212 20:44:10 [Note] Plugin 'FEDERATED' is disabled.
121212 20:44:10 InnoDB: The InnoDB memory heap is disabled
121212 20:44:10 InnoDB: Mutexes and rw_locks use GCC atomic builtins
121212 20:44:10 InnoDB: Compressed tables use zlib 1.2.3
121212 20:44:10 InnoDB: Using Linux native AIO
121212 20:44:10 InnoDB: Initializing buffer pool, size = 128.0M
121212 20:44:10 InnoDB: Completed initialization of buffer pool
121212 20:44:10 InnoDB: highest supported file format is Barracuda.
121212 20:44:11 InnoDB: Waiting for the background threads to start
121212 20:44:12 InnoDB: 1.1.8 started; log sequence number 1595675
121212 20:44:12 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
121212 20:44:12 [Note] - '0.0.0.0' resolves to '0.0.0.0';
121212 20:44:12 [Note] Server socket created on IP: '0.0.0.0'.
121212 20:44:12 [Note] Event Scheduler: Loaded 0 events
121212 20:44:12 [Note] /usr/sbin/mysqld: ready for connections.
Version: '5.5.27-log' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Server (GPL)
我猜绑定地址有问题。我该如何修复这个问题?
答案1
只需重置您的密码并确保mysql.user
表中的用户名和主机规范正确 - “拒绝访问”错误意味着您正在访问侦听器,因此您的绑定地址没有问题。
添加并重新启动服务,然后查看表格并根据需要更改主机和密码 - 确保在完成后将其从配置中删除skip-grant-tables
。my.cnf
mysql.user
skip-grant-tables