您好!欢迎访问否玩代码!
My title page contents
广告位

MySQL连不上?5分钟排查+白嫖一个永久数据库

栏目: 日期: 浏览:121

有不少人, 在刚刚搭好环境之后、或者部署网站时段, 会碰到这样的一个报错: Can't connect to MySQL server。不要慌张, 这一般来讲是网络、服务或者权限方面的问题。下面依照优先级给出排查步骤, 另外附赠一个免费的方案。

第一步:检查MySQL服务是否在运行

登录服务器,执行:

systemctl status mysql
# 或
systemctl status mysqld

要是呈现出inactive或者failed这种情况呢, 那就去启动它。

systemctl start mysql
systemctl enable mysql

若启动遭遇失败状况, 需对错误日志展开检查, 错误日志一般在这个位置(也即/var/log/mysql/error.log), 其常见致使原因在于, 要么是my.cnf配置出现错误, 要么是磁盘空间处于不足的状态。

第二步:确认端口和监听地址

代表MySQL默认端口的数字3306, 可通过运用netstat或者ss进行查看。

ss -tlnp | grep 3306

倘若仅存有127.0.0.1:3306, 这表明仅准许本机进行连接, 远程连接则需将my.cnf里的bind-address修正为0.0.0.0, 随后重新启动MySQL。

[mysqld]
bind-address = 0.0.0.0

第三步:检查防火墙和云安全组

服务器防火墙放行3306端口:

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

针对云服务器, 像阿里云、腾讯云这类的, 在控制台之中放置的安全组里, 要增添进入的规则, 此规则为协议TCP, 端口是3306, 源IP设定成0.0.0.0/0, 或者也可以是指定的IP。

第四步:数据库用户权限

当处于远程连接的状况之下, MySQL用户是需要拥有远程访问权限的。在登录MySQL之后去执行。

CREATE USER 'youruser'@'%' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON . TO 'youruser'@'%';
FLUSH PRIVILEGES;

百分号, 意味着许可任意的IP进行连接, 而在生产环境当中, 建议将其替换为具体的IP。

第五步:连接测试

用命令行验证:

mysql -h your_server_ip -u youruser -p

倘若达成成功的状况, 所面临的问题便会得以解决。要是依旧出现报错的情形, 那就进行抓包操作, 以此来检查是不是存在诸如反向代理、NAT这类的中间设备对其产生干扰。

要是你不想自行去折腾服务器, 那这儿有个省心的方案推荐给你: 否玩代码编辑(https://www.fouwan.com)给出了免费的MySQL环境, 它不需要进行配置, 开箱之后就能够使用, 极为适合用来进行测试以及学习。只要你注册之后新建一个数据库, 就能够在网页端直接去管理表结构和数据, 连本地客户端都不用安装。对于个人项目或者原型开发而言, 可比自己搭建服务器要快好多。