今天遇到两个问题:Can't connect to MySQL server 与 Access denied for user !

本文介绍了如何解决MySQL无法从远程电脑连接的问题,包括修改配置文件中的bind-address设置及调整user表中的用户权限。

问题一:本机(localhost)连接一切正常,但是无法从其他电脑上登入 MySQL 数据库!


下面是 /etc/mysql/my.cnf 中的一段摘录:


# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 10.0.0.1 # 127.0.0.1

其中说明 MySQL默认设定为只在 localhost 进行侦听,所以如果登录的 MySQL Client 与 MySQL Server 不为同一台电脑的话,MySQL 是不会响应的。故需要把这里的 bind-address 修改为此台电脑的 external IP 即可。

问题二:ERROR 1045 (28000): Access denied for user 'root'@'10.0.0.1' (using password: YES) !

这个也是颇有意思,首先看看原本系统表中的资料:


mysql> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

mysql> SELECT Host FROM user WHERE user='root';
+-----------+
| Host      |
+-----------+
| sharkwang |
| localhost |
+-----------+
2 rows in set (0.00 sec)

恩,这里除了有 localhost 外,居然还有一个 sharkwang ,而我连接的时候是用IP而不是hostname !

所以,有2个方案:

1. 在 MySQL Client 所在的电脑上面,修改 /etc/hosts 文件,加入 hostname 和 IP 的映射关系。

   
登录方式为: shell> mysql -h <mysql_server_hostname> -u root -p

2. 在 MySQL 数据库的 user 表中增加一条记录,内容参照:

    SELECT * FROM user WHERE User='root' AND Host='localhost'

    然后把 Host 对应的值修改为 MySQL Server 的 external IP。

    登录方式为: shell> mysql -h <mysql_server_ip> -u root -p


Xtrabackup 连接 MySQL 服务器出现 `Access denied for user` 错误通常是由于权限不足、密码错误或配置问题导致的。以下是一些可能的解决办法: #### 检查用户名和密码 确认使用的用户名和密码是正确的,并且该用户具有执行备份操作的权限。可以通过以下命令测试连接: ```bash mysql -u <username> -p ``` 将 `<username>` 替换为实际使用的用户名,然后输入密码。如果无法连接,需要检查密码是否正确。 #### 授予用户足够的权限 确保用于备份的用户具有足够的权限。可以使用以下 SQL 语句为用户授予必要的权限: ```sql GRANT RELOAD, LOCK TABLES, REPLICATION CLIENT, CREATE TABLESPACE, PROCESS ON *.* TO '<username>'@'<host>'; FLUSH PRIVILEGES; ``` 将 `<username>` 替换为实际使用的用户名,`<host>` 替换为客户端的主机名或 IP 地址。 #### 检查 MySQL 配置 确保 MySQL 服务器允许远程连接(如果需要),并且没有限制特定用户的访问。可以检查 `my.cnf` 或 `my.ini` 文件中的 `bind-address` 和 `skip-networking` 选项: ```ini bind-address = 0.0.0.0 # 允许所有 IP 地址连接 skip-networking = 0 # 启用网络连接 ``` #### 检查 Xtrabackup 命令 确保在运行 Xtrabackup 命令时正确指定了用户名和密码。例如: ```bash xtrabackup --user=<username> --password=<password> --backup --target-dir=/path/to/backup ``` 将 `<username>` 和 `<password>` 替换为实际使用的用户名和密码,`/path/to/backup` 替换为实际的备份目录。 #### 检查防火墙设置 确保防火墙允许 Xtrabackup 连接到 MySQL 服务器的端口(默认为 3306)。可以使用以下命令开放端口: ```bash sudo ufw allow 3306/tcp ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值