安装mariadb/mysql 连接失败问题

在linux下安装mariadb会出现一系列问题

问题1->服务器端不需要用户名密码就可登陆数据库

问题2->php使用musql不能连接数据库 访问受限

问题3->navicate远程连接数据库失败

 

在捣鼓一段时间之后然后莫名就可以了,虽然知道是权限方面的问题,但是终究不得要领。为了弄清楚特意找了个新服务器,重新搭建一套ubuntu、php7、mariadb的环境重现一下问题。

具体的安装过程这里略过了啊,网上这方面资料很多。

安装完mariadb第一次登陆是没有登录密码限制的,就是随便输什么密码都可以进入,但是用户名是固定的 root

#mysql -u root -p

空格

注意我这里输入的是空格 然后就进来了.

之后我们看看这是为什么

MariaDB [mysql]> use mysql;

MariaDB [mysql]> select user,password,host from user;

 

 

这个名为mysql的库是记录mysql相关内容的数据

而user就是记录mysql用户名及密码权限的表可以看到root的密码是空的

下面我们先解决这个问题

先运行命令

MariaDB [mysql]> grant all privileges on *.* to root@"localhost" identified by "123456";

然后我们查看用户及密码

MariaDB [mysql]> select user,password,host from user;

 

然后我们就会发现必须使用123456这个密码来进图数据库了 问题一解决

 

下一步我们尝试使用远程工具navicate链接mariadb 

 

 

 

 

然后通过度娘找到了一些方法

mysql和mariadb中关于root权限管理不同 需要调配

执行两条命令 添加两个用户

MariaDB [mysql]> grant all privileges on *.* to root@"%" identified by "123456"; 

MariaDB [mysql]> grant all privileges on *.* to root@"127.0.0.1" identified by "123456";

MariaDB [mysql]> flush privileges;
# vim /etc/mysql/mariadb.conf.d/50-server.cnf

找到

bind-address = 127.0.0.1

将其注释掉

# bind-address = 127.0.0.1

保存退出 重启mysql

# service mysql restart

再次连接之后我惊喜的发现 还是链接不上,一股烦躁之气渐渐升起。平定一下心神,看看数据库去吧。

MariaDB [mysql]> select * from user;

之后找到这一行 为什么是N呢 这个权限不对啊 改下试试

 

 

MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '123456' WITH GRANT OPTION;

MariaDB [mysql]> flush privileges;

 

重新连接发现

 

 

苍天啊 大地啊 绝望啊 ,放弃吧? 开玩笑!

继续查资料发现是端口问题使用

 

# netstat -aptn执行看看,是否监听在0.0.0.0:3306

重启mysql之后发现监听并没有改变

kill掉3306的进程号 991 再次重启之后我得到了下面几张截图效果

 

本以为弄到这种程度就可以了 然而现实继续教育了我 继续失败

其实这时候我试了下 本地php链接数据库 发现是可以的 问题在倒腾的过程中已经解决了 是用户权限那里的问题

想想如果权限没有问题了 是不是端口问题呢?

 

然后使用telnet工具测试端口开放情况

1、安装telnet。我的win7下就没有telnet,在cmd下输入telnet提示没有该命令。于是我们进入控制面板---->程序---->打开或关闭windows功能。然后等一段时间,在出来的对话框把telnet客户端和telnet服务器勾选上,其他的不用管,然后点击确定。这样就安装好了telnet组件了。

2、 下面开始测试某个端口是否开启,比如我测的是192.168.3.42的2121这个端口。在cmd下输入

telnet 47.104.195.152 3306

 

 

而正常的情况是这样的 跳转一个新的页面

 

 

所以现在已经锁定是端口的问题

 下面是一些开放的操作 我这里是没什么用的 我用是阿里云的服务器

ss -nltp | grep 3306 查看服务端口是否连接

iptables -nL 查看防火墙端口是否开启

iptables -I INPUT -p tcp --dport 3306 -j ACCEPT 开放防火墙3306端口

 

经过一系列恶心的尝试 发现还是不能接通

既然内部不能改变规则 那就去阿里云界面去改 这个是案例云安全组里面的内容

 

 

这个3306开始是没有的 重启服务器

这个3306开始是没有的 重启服务器

 

 

ok 链接成功 整理一下回去睡觉了 中间还有很多细节没弄清楚 但是明天还要上班啊

人生什么的还是不要随便怀疑吧 相信自己。

猜你喜欢

转载自www.cnblogs.com/haizizhu/p/9215665.html
今日推荐