最近在自己的华为云服务器上想装一个MySQL 作为远程的数据库使用,数据库安装之后在本地访问远程数据库遇到了问题,一直报错10038 ,于是开始了漫长的翻帖爬楼的历程。在这里将这爬楼的历程记录下来。
总的来说,(10038) 错误有以下几种解决方式:
1. mysql 数据库 user表 的 host 由 localhost 改为 %
2. 更改root用户的授权(与 1 相似 )
3. 更改服务器的防火墙设置(即:开放服务器的3306端口的入站访问)
4. 更改mysql 的配置文件(到这才解决)
下面分别对使用这几种方法解决问题的过程进行详细的说明:
1. 通过远程访问服务器,登录数据库
2. 选择使用mysql数据库,并查看user 表中的host 信息
3. 更改root 用户的host 信息
mysql -u root -p
mysql> use mysql;
mysql> select user,host from user;
mysql> grant all privileges on *.* to 'root'@'%' identified by 'password' with grant option;
mysql> select user,host from user;
mysql> flush privileges;
注:*.* 指所有的数据库中所有的表,localhost 之仅本机可访问,%指所有的ip 均可访问。
在云服务器的安全组设置中开放3306 端口(mysql)。
添加完成后记得刷新,并进入服务器管理的控制台刷新服务器。
MySQL配置文件中会默认只能本地访问。具体参数为 bind-address = 127.0.0.1 ,需要在配置文件中将设置信息注释掉。这个参数的具体位置在
/etc/mysql/mysql.conf.d/mysqld.cnf
下面,我们来复现下具体的寻找过程。。。
cd /etc/mysql
ls
cat my.cnf
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mysql.conf.d/
cd conf.d
ls
cd ../mysql.conf.d
ls
vim mysqld.cnf
心里那是一个累啊。。。。(大家可以直接找到文件 mysqld.cnf 更改参数即可)
vim /etc/mysql/mysql.conf.d/mysqld.cnf
使用vim 编辑 mysqld.cnf 文件:
找到 bind-address = 127.0.0.1 并注释掉,到此问题解决!(大概在40行以后)
下面是远程连接成功的截图
虽然解决问题的过程是很痛苦的,无休止的爬楼,爬楼仍然解决不了的时候会使人崩溃。可是在弄清楚每一个步骤所解决的问题和问题背后的知识收获还是很大的。更重要的是,大家应该都有体会,在解决问题那一刻的愉悦是很享受的。