这是头一次用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. iOS音频学习笔记三:音频会话管理

    ​      使用Audio Session API ,可以指定App需要的音频行为,比如,当播放音频时,使得其他应用App静音或者混和在一起,也可以指定当App的音频被中断(例如被电话)时的行为,还 ...

  2. Linux基础命令汇总109条

    1       文件管理 1.1     basename 1.1.1     功能说明 从文件名中去掉路径和扩展名 例:basename include/stdio.h .h Output &quo ...

  3. 如何使用.gitignore文件删除掉已经提交的文件

      如何使用.gitignore文件删除掉已经提交的文件 2018.06.06 22:13:38字数 96阅读 116 如果你的文件已经提交,而此时你才发现忘了添加.gitignore文件,不用担心, ...

  4. MySQL主从复制(Centos6.3&MySQL5.6)

    环境: Master:Centos 6.3        192.168.1.4  Slave:Centos 6.3            192.168.1.5 MySQL: MySQL-5.6.2 ...

  5. webpack中如何编写一个plugin

    loader和plugin有什么区别呢?什么是loader,什么是plugin. 当我们在源代码里面去引入一个新的js文件或者一个其他格式的文件的时候,这个时候,我们可以借助loader去帮我们处理引 ...

  6. python函数式编程-匿名函数

    >>> map(lambda x: x * x, [, , , , , , , , ]) [, , , , , , , , ] 关键字lambda表示匿名函数,冒号前面的x表示函数参 ...

  7. Mybatis3.0-[tp_28-29]-映射文件-resultMap_自定义结果集映射规则_及关联环境的搭建

    笔记要点出错分析与总结工程组织 1.定义接口  EmployeeMapperPlus.java package com.dao; import com.bean.*; public interface ...

  8. vue中watch的详细用法(转载)

    在vue中,使用watch来响应数据的变化.watch的用法大致有三种.下面代码是watch的一种简单的用法: <input type="text" v-model=&quo ...

  9. 13 复习 - webpack基本配置2

    在webpack下使用样式表 1.安装处理样式表的loader cnpm i style-loader css-loader -D //css cnpm i less-loader less -D / ...

  10. python_面向对象——封装

    1.私有属性 class Person(object): def __init__(self,name,age): self.name = name self.age = age #实例属性 self ...