• “可恶”的mariadb


    这是头一次用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 | | ::1 | 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 | | ::1 | root | *7DA6E613C81FE6163422CD48DF480B66BCEC66 | | % | root | *7DA6E613C81FE6163422CD48DF480B66BCEC66 | +-----------+------+-------------------------------------------+
    #看吧,是不是比之前多了一行host为%的数据,这表示该用户可以远程连接数据库啦,如果你表中本来就有的话那就不是远程连接配置的问题啦
    #网上有很多要修改配置文件,注释掉1.7.0.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 70% of total RAM for dedicated server, else 10%. # 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=0 #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.50-1.el7_2.x86_64
    mariadb-5.5.50-1.el7_2.x86_64
    mariadb-server-5.5.50-1.el7_2.x86_64
    
    # rpm -e --nodeps mariadb-libs-5.5.50-1.el7_2.x86_64
    # rpm -e --nodeps mariadb-5.5.50-1.el7_2.x86_64
    # rpm -e --nodeps mariadb-server-5.5.50-1.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
    
    #在修改字符编码前的数据库编码还是不会变,需要重新创建数据库,再把数据导入
  • 相关阅读:
    redis key命名规范
    git修改commit作者名
    spring cloud 入门学习
    IDEA 插件大全
    2019 java中高级 面试题汇总
    Spring boot整合Mybatis【详细的一匹】
    MySQL存储过程
    HTTP状态码详解
    java 职业规划
    javaweb项目实现文件上传下载
  • 原文地址:https://www.cnblogs.com/coffee9527/p/8965938.html
Copyright © 2020-2023  润新知