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

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

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

问题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;
退出数据库 exit;或者ctrl+c 
修改mysql的配置文件
# 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 再次重启之后我得到了下面几张截图效果

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

其实这时候我对于权限这块还是端口这块我是抱有疑问的 所以我试了下 本地php 使用pdo链接数据库 发现是可以连接操作的 经过以前失败的经验我可以认为权限问题已经解决了。

所以问题二 php使用mysql不能连接数据库访问受限 在倒腾的过程中已经解决了

这里画下重点:一般情况下 到这里数据库连接的问题 已经基本解决了

根据查阅的资料,造成不能连接的原因是 mysql 和 mariadb 对于 root 权限管理是不同的,mariadb对于root的权限默认是不开放Gan_priv权限的。另外对于用户表mariadb添加了两个新字段,is_role和password_expired。数据库的表格数也是不同的,老版mysql是24张表左右 而mariadb是30张左右(这里就不去数各个版本的具体数量了,有个概念)

下面继续直面我的问题

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

然后使用telnet工具本地 cmd 命令行测试端口开放情况

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

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

telnet 47.104.195.152 3306

而正常的情况是这样的 跳转一个新的页面 如果有疑问可以测试80 或者22 端口我这里是通的

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

下面是一些开放的操作 不过在我这里是没什么用的 怎么开端口加防火墙规则也么用

我用是阿里云的服务器

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

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

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

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

既然内部不能改变规则 那就去服务器上 阿里云界面去改试试

这个是案例云安全组里面的内容 经过添加一定的规则 有了下面的内容 这个3306

开始是没有的,添加好了规则之后  重启服务器

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

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

-------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------------------------

这里给大家普及一个阿里云服务器比较实惠的小技巧 在阿里云创建实例的时候 选择抢占实例的选项

很适合开发人员进行一次性试验的时候使用 做一次试验 部署一台云服务器 成本控制在2元以内

抢占式实例 抢占式实例 抢占式实例

这个官方的解释是随时有可能会释放 提前5分钟通知,其实就是把卖不出去的服务器资源便宜卖了,如果资源不够了再及时收回来。批发改零售嘛!一天两天的 是不会被回收的!

因为是一次性的想怎么捣鼓怎么捣鼓 如果想在正式服务器上面捣鼓 也不拦着,如果你吼得住的话!

安装mariadb/mysql 连接失败问题的更多相关文章

  1. mysql连接失败或出现“Too many connections”错误

    mysql连接失败或出现"Too many connections"错误 # 按自己服务器的配置文件路径修改 vi /etc/my.cnf 查找:max_connections 修 ...

  2. mysql连接失败HikariPool错误

    1. mysql连接失败HikariPool错误 1.1. 异常 com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during ...

  3. CentOS通过yum安装MariaDB(MySQL)无法启动服务或者找不到mysql.sock

    转载自:http://www.linuxidc.com/Linux/2016-03/129396.htm 今天在Linux主机(CentOS 7)安装(yum install方式)Mariadb(即开 ...

  4. CentOS 7 Linux 卸载/安装 Mariadb MySQL mysql 5.7

    [root@localhost mysql]# ls mysql-community-client--.el7.x86_64.rpm mysql-community-embedded-compat-- ...

  5. cent os 安装mariaDB / mySQL 之后初始化的命令

      #安装mysql mysql-server,默认安装的是开源的mariaDB和它的server,mariadb-server,安装源中可能有找不到的,就换个名字再找找 yum install -y ...

  6. mysql 连接失败问题汇集

    FHost '192.168.5.128' is not allowed to connect to this MySQL serverConnection closed by foreign hos ...

  7. 解决idea中mysql连接失败Could not create connection to database server. Attempted reconnect 3 times. Giving up.

    原因是少一个参数,设置时区的.  解决方法: 加一个参数: serverTimezone=UTC jdbc:mysql://localhost:3306/SshProject?useUnicode=t ...

  8. 【MySQL】Mac通过brew安装的MySQL重启方法

    问题 在 Mac 上通过 brew install mysql 安装的的MySQL使用基本MySQL命令重启会失败: mysql.server stop mysql.server start mysq ...

  9. mysql安装和配置详解以及Navicat连接失败问题

    好久没安装过MySQL了,今天安装了下竟然碰壁了, 就来做个笔记吧.安装步骤如下: 记住:一定要看到最后!!!!!!!!! 一. 安装  1.安装 (https://dev.mysql.com/dow ...

随机推荐

  1. [BUUOJ记录] [强网杯 2019]随便注(三种方法)

    本题主要考察堆叠注入,算是比较经典的一道题,在i春秋GYCTF中也出现了本题的升级版 猜测这里的MySQL语句结构应该是: select * from words where id='$inject' ...

  2. Zookeeper协议篇-Paxos算法与ZAB协议

    前言 可以自行去学习一下Zookeeper中的系统模型,节点特性,权限认证以及事件通知Watcher机制相关知识,本篇主要学习Zookeeper一致性算法和满足分布式协调的Zab协议 Paxos算法 ...

  3. [Java数据结构]LinkedHashMap,TreeMap

    HashMap不能记住插入时的顺序,但LinkedHashMap可以做到这一点. 例程: Map<Integer,String> empMap=new LinkedHashMap<I ...

  4. python应用 曲线拟合 02

    前情提要 CsI 闪烁体晶体+PD+前放输出信号满足: $U(t) = \frac{N_f\tau_p}{\tau_p-\tau_f} \left[ e^{-\frac{t}{\tau_p}}-e^{ ...

  5. JavaScript 异步编程

    博客地址:https://ainyi.com/96 众所周知,JavaScript 是单线程的,但异步在 js 中很常见,那么简单来介绍一下异步编程 同步编程和异步编程 同步编程,计算机一行一行按顺序 ...

  6. Java学习预热

    预备知识 什么是计算机 点击进入百度百科(计算机) 计算机硬件组成 主要部件 CPU 内存 主板 IO设备 键盘 鼠标 麦克风 显示器 音箱 冯·诺依曼体系结构 计算机软件 系统软件 DOS wind ...

  7. react项目结合echarts,百度地图实现热力图

    一.最近在一个react项目(antd pro)中需要展示一个热力地图.需求是: 1.热力地图可缩放: 2.鼠标点击可以展示该点地理坐标,及热力值. 3.初始化时候自适应展示所有的热力点. 4.展示热 ...

  8. 熟悉ifos项目的记录吧

    1.首页关联的:在 default-navigation-model.xml里 2.输入框改成下拉列框 第一步,找到需要修改的view的包,新建一个view obj 第二步,在query里写上需要找的 ...

  9. java基础整理总结篇(1)

    >>java数据区域,大致分以下几种 寄存器:位于cpu内部,寄存器的数量有限,所以寄存器根据需求分配.不能直接控制它. 堆栈:位于通用RAM(随机访问存储器)中,通过堆栈指针可以从处理器 ...

  10. Halcon使用骨架法处理激光条并拟合直线

    dev_close_window () * 设置颜色 dev_set_color ('green') * 读取图像 read_image (Image, 'images3/1') * 获得图像尺寸 g ...