zoukankan      html  css  js  c++  java
  • “可恶”的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
    
    #在修改字符编码前的数据库编码还是不会变,需要重新创建数据库,再把数据导入
  • 相关阅读:
    Codeforces 1316B String Modification
    Codeforces 1305C Kuroni and Impossible Calculation
    Codeforces 1305B Kuroni and Simple Strings
    Codeforces 1321D Navigation System
    Codeforces 1321C Remove Adjacent
    Codeforces 1321B Journey Planning
    Operating systems Chapter 6
    Operating systems Chapter 5
    Abandoned country HDU
    Computer HDU
  • 原文地址:https://www.cnblogs.com/coffee9527/p/8965938.html
Copyright © 2011-2022 走看看