这是头一次用mariadb,听说是centos7自带的,本来本地用的好好地,今天想连接一下远程centos7主机上的mariadb,结果各种出错,痛不欲生,最后实在买办法只能卸载装mysql啦。稍微记录一下

先说一下我的mariadb是5.5的,mysql是5.6的,系统为centos7

以.无法连接远程数据库的原因主要有如下几点

  (1).数据库没有启动

  (2).被防火墙拦截

  (3).数据库不允许用户远程连接

  (4).用户名密码不对

1.针对第一种情况

  可以试一下本地是否可以登录,能登录说明有启动,也可以用如下命令查看数据库运行状态

#mysql
service mysqld status
#mariadb
service mariadb status 出现绿色字体的active (running)信息表示数据库正在运行

2.被防火墙拦截的话,就老老实实配置一下防火墙吧

#该命令可以查看防火墙是否启动
firewall-cmd --state

  我是没有开启防火墙,所以没管这块,后面遇到再整理吧

3.数据库不允许用户远程连接

#在本地进入数据库(通过远程连接工具哈)
mysql -uroot -ppasswd
#进入mysql数据库(自带的数据库)
use mysql;
#主要是修改user表,先查看一下user表内容
SELECT host,user,password FROM user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *7DA6E613C81FE6163422CD48DF480B66BCEC66 |
| 127.0.0.1 | root | *7DA6E613C81FE6163422CD48DF480B66BCEC66 |
| :: | root | *7DA6E613C81FE6163422CD48DF480B66BCEC66 |
+-----------+------+-------------------------------------------+
#你看上面的host都是本地的,下面配置一下通过授权的方式配置远程连接的权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
#我们再来查询一下user表
SELECT host,user,password FROM user;
+-----------+------+-------------------------------------------+
| host | user | password |
+-----------+------+-------------------------------------------+
| localhost | root | *7DA6E613C81FE6163422CD48DF480B66BCEC66 |
| 127.0.0.1 | root | *7DA6E613C81FE6163422CD48DF480B66BCEC66 |
| :: | root | *7DA6E613C81FE6163422CD48DF480B66BCEC66 |
| % | root | *7DA6E613C81FE6163422CD48DF480B66BCEC66 |
+-----------+------+-------------------------------------------+
#看吧,是不是比之前多了一行host为%的数据,这表示该用户可以远程连接数据库啦,如果你表中本来就有的话那就不是远程连接配置的问题啦
#网上有很多要修改配置文件,注释掉1.7.0..1之类的,可能是版本问题,我的压根找不到这配置文件。

4.用户名密码不正确

  主要说一下忘记密码了怎么办吧

  

#编辑/etc/my.cnf 加入skip-grant-tables
#不同版本配置文件位置可能不懂,这个就要自己查查看吧,我说的这个是mysql5.6的
vim /etc/my.cnf
#修改如下:
---------------------------------------------------------------------------------------------
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html [mysqld]
#
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at % of total RAM for dedicated server, else %.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=
#skip-grant-tables # Recommended in standard MySQL setup
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES [mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
------------------------------------------------------------------------------------
#重启MySQL
systemctl restart mysqld #只要你上面有配置成功,那其实现在你的数据库可以在任何地方免密码登录啦,前提你有配置远程登录
#现在试一下可不可以远程登录mysql了呢,但是这样是很不安全的,继续下面配置
#直接用mysql命令登录
mysql #进入'mysql'数据库
use mysql; #修改密码
UPDATE user SET Password = PASSWORD('newpass') WHERE user = 'root';
#如果上面的命令报错,可以是一下这个
update mysql.user set authentication_string=password('root') where user='root'; #编辑my.cnf文件删掉skip-grant-tables 这一行,然后重启MySQL
systemctl restart mysqld #再试一下可不可远程连接了呢,
#最痛不欲生的就是现在还是没办法远程连接,这几步我反复试了很多次,密码修改后一直不生效,最后做到免密码登录后睡了一觉第二天再配置了一变竟然生效啦,
#所以有啥解决不了的问题,睡一觉自然就好了。建议在操作这几步的时候慢一些,可能是配置没能马上生效。

之所以把mariadb卸载重装了mysql,是因为我在执行修改密码的操作时,发现我的mariadb数据库无法停止,也许你可以在修改密码后通过 flush privileges; 命令使修改生效。

我的mariadb的配置一直没生效,你也可以试一下把程序kill掉,我怕以后还出问题,一气之下果断下载了,关于卸载的步骤,可以参考https://blog.csdn.net/sunny05296/article/details/56015884和https://blog.csdn.net/xizaihui/article/details/53041603

我是这样卸载的

# rpm -qa | grep mariadb
mariadb-libs-5.5.-.el7_2.x86_64
mariadb-5.5.-.el7_2.x86_64
mariadb-server-5.5.-.el7_2.x86_64 # rpm -e --nodeps mariadb-libs-5.5.-.el7_2.x86_64
# rpm -e --nodeps mariadb-5.5.-.el7_2.x86_64
# rpm -e --nodeps mariadb-server-5.5.-.el7_2.x86_64 #删除数据库文件:
rm -rf /var/lib/mysql/*

另外卸载之前如果有数据的话要备份一下,可以参考https://www.cnblogs.com/jwlfpzj/articles/7998395.html

主要记录一下导出数据到文件的和从文件导入数据库的命令

#导出,可以不登陆数据库服务
mysqldump -u dbuser -p dbname > dbname.sql
#导入,需要登录数据库服务,并选择要导入到的数据库
source /home/abc/abc.sql;

最后再说一个安装mysql5.6的参考文章:https://blog.csdn.net/xizaihui/article/details/52962057

安装完数据库后要设置一下字符编码,不然后面创建的数据库会不支持中文或者乱码

#编辑 /etc/my.cnf
vim /etc/my.cnf #在[mysqld]下添加如下配置
character-set-server=utf8 #如果字符集还不行,再增加如下配置
[client]
default-character-set=utf8 [mysql]
default-character-set=utf8 #在修改字符编码前的数据库编码还是不会变,需要重新创建数据库,再把数据导入

“可恶”的mariadb的更多相关文章

  1. Docker笔记一:基于Docker容器构建并运行 nginx + php + mysql ( mariadb ) 服务环境

    首先为什么要自己编写Dockerfile来构建 nginx.php.mariadb这三个镜像呢?一是希望更深入了解Dockerfile的使用,也就能初步了解docker镜像是如何被构建的:二是希望将来 ...

  2. 续 CentOS7(mini) 运行MVC5 + Mariadb

    上一篇,介绍了在CentOS7上使用mono官方二进制安装包快速安装mono环境 并且成功运行了一个Owin自宿主应用(Booker) 由于Owin自宿主应用不需要System.Web的支持,所以可以 ...

  3. 读书笔记--SQL必知必会--常用MySQL(MariaDB)命令

    DBMS信息 显示DBMS的版本 select version(); 显示DBMS状态 status; 显示DBMS资源状态 show status; 显示DBMS支持的权限 show privile ...

  4. 从MySQL 5.5迁移到Mariadb 10.1.14

    从MySQL 5.5迁移到Mariadb 10.1.14 迁移计划如下: 1.备份MySQL 5.5的数据库,对指定库进行备份. 2.还原到Mariadb,然后建立复制. 3.然后就可以愿意啥时候切换 ...

  5. mariadb数据库忘记密码如何找回

    1.systemctl stop mariadb ==>停止mariadb数据库 2.mysqld_safe --skip-grant-tables & ==>进入单机模式 3.m ...

  6. CentOS 7 x64下Apache+MySQL(Mariadb)+PHP56的安装

    每次搭建新服务器,都要来来回回把这些包再装一下,来来回回搞了不下20遍了吧,原来都是凭经验,配置过程中重复入坑是难免的,故写此文做个备忘.虽然有像xampp这样的集成包,但是在生产环境的Linux发行 ...

  7. Ubuntu 16.04 LAMP server 指南 - 配置 Apache2.4,PHP7,和MariaDB(而不是MySQL)

    翻译自:https://www.howtoforge.com/tutorial/install-apache-with-php-and-mysql-on-ubuntu-16-04-lamp/ 昨天在虚 ...

  8. CentOS 7.0 使用 yum 安装 MariaDB 与 MariaDB 的简单配置

    1.安装MariaDB 安装命令 yum -y install mariadb mariadb-server 安装完成MariaDB,首先启动MariaDB,两条命令都可以 systemctl sta ...

  9. MySQL/MariaDB/PerconaDB-提权条件竞争漏洞

    背景 2016年11月01日,国外安全研究员Dawid Golunski在 MySQl, MariaDB 和 PerconaDB 数据库中发现条件竞争漏洞,该漏洞允许本地用户使用低权限(CREATE/ ...

随机推荐

  1. 【转载】 C#中日期类型DateTime的日期加减操作

    在C#开发过程中,DateTime数据类型用于表示日期类型,可以通过DateTime.Now获取当前服务器时间,同时日期也可以像数字一样进行加减操作,如AddDay方法可以对日期进行加减几天的操作,A ...

  2. js钩子函数实现一个简单动画

    <!DOCTYPE html> <html> <head> <title></title> <meta charset="u ...

  3. goroutine并发控制与通信

    转发:https://mp.weixin.qq.com/s/ZlyQHfmoY1lzOoRgFSCOBw 开发go程序的时候,时常需要使用goroutine并发处理任务,有时候这些goroutine是 ...

  4. 网站seo搜索引擎优化

    SEO综合查询方式:http://seo.chinaz.com/网站地址(一般为域名地址),比如:http://seo.chinaz.com/www.test.com 搜索关键字(keywords)优 ...

  5. c# 抽象工厂设计模式

  6. 软硬RAID 和 不常见的RAID

    若转载请于明显处标明出处:http://www.cnblogs.com/kelamoyujuzhen/p/5561809.html 为啥子引入RAID? 存储最现实的两个问题:速度.容量 001——计 ...

  7. linux----centos7 yum安装lnmp+zabbix

    安装yum utils工具包,若不安装则会找不到命令yum-config-manageryum -y install yum-utils 启用yum仓库yum-config-manager --ena ...

  8. java基础(1)----简介

    基础语法. 面向对象. 字符串和集合. IO流. 接口. lambda. 方法引用. Stream. 模块化. 一.java的前世今生: J2SE:标准体验版.J2EE:企业版.J2ME:小型版(移动 ...

  9. 单链表(python)

    # -*- coding: utf-8 -*- class Node(object): def __init__(self, value=None, next=None): # 这里我们 root 节 ...

  10. How to parse unix timestamp to time.Time

      The time.Parse function does not do Unix timestamps. Instead you can use strconv.ParseInt to parse ...