linux中的数据库

mariadb

mariadb其实就是mysql
mysql已经被oracle收购,它即将闭源,马上要开始收费了
因此还想免费试用开源的数据库mysql,就在centos7上,将mysql分支为mariadb


安装mariadb,在centos7底下:
linux软件包的格式 mysql.rpm

1.通过yum去安装

了解

安装mariadb,在centos7底下:
linux软件包的格式  mysql.rpm 

1.通过yum去安装
    1.linux的yum软件管理目录在 /etc/yum.repos.d
    2.在这个目录底下,主要是*.repo这个文件,就会被识别为yum源文件
    
第一种方式是,通过阿里云的yum源去下载(第三方的yum源,可能会版本较低,且软件不全,可能找不到)
CentOS-Base.repo    epel.repo   

    yum install mariadb-server   #yum安装mariadb    因为这个阿里云特别快,咱们用他去学习,加速下载  300kb/s 
    
    mariadb-server                     x86_64                     1:5.5.60-1.el7_5                       base                      11 M
    为依赖而安装:
    mariadb                            x86_64                     1:5.5.60-1.el7_5                       base                     8.9 M
    perl-DBD-MySQL                     x86_64                     4.023-6.el7                            base                     140 k
    为依赖而更新:
    mariadb-libs                       x86_64                     1:5.5.60-1.el7_5                       base                     758 k




第二种方式是,通过mariadb官方的yum源去下载(一定是这个软件最正确的yum源,且包都是最新的)
    1.下载一个第三方的软件,顺序就是去官网找到这个软件的下载方式

    
    yum install MariaDB-server MariaDB-client  #区分大小写  ,这个方式是取国外下载mariadb,速度太慢  30kb/s  

依赖关系解决

=====================================================================================================================================
 Package                              架构                  版本                                        源                      大小
=====================================================================================================================================
正在安装:
 MariaDB-client                       x86_64                10.1.37-1.el7.centos                        mariadb                 40 M
 MariaDB-server                       x86_64                10.1.37-1.el7.centos                        mariadb                104 M
 MariaDB-shared                       x86_64                10.1.37-1.el7.centos                        mariadb                1.3 M
      替换  mariadb-libs.x86_64 1:5.5.56-2.el7
为依赖而安装:
 MariaDB-common                       x86_64                10.1.37-1.el7.centos                        mariadb                123 k
 boost-program-options                x86_64                1.53.0-27.el7                               base                   156 k
 galera                               x86_64                25.3.24-1.rhel7.el7.centos                  mariadb                8.1 M
View Code

 

1.下载mariadb,通过阿里云的源

yum install mariadb-server

2.通过yum安装的软件

systemctl start mariadb   #启动mariadb数据库

systemctl start/stop/restart/status  mariadb     # 启动 停止 重启数据库

3.初始化mariadb

mysql_secure_installation    #直接输入这个命令,设置root密码,删除匿名用户等等操作

4.配置myariadb远程登录

可以通过windows,pycharm等客户端进行连接,在远端登录的话,就必须得输入redhat这个密码

grant all privileges on *.* to root@'%' identified by 'redhat';

授予 所有的 权限 在 所有的库.所有的表 用户名@"所有的地址" identified by "密码";

5.刷新授权表,使得权限立即生效

flush privileges;

6.SQL部分语句

1.更改mysql的密码
set password = PASSWORD('redhat123');

2.创建普通用户s14
create user cai@'%' identified by 's14666';

3.查询用户信息
select host,user,password  from user;

4.授权语句
grant 权限 on 数据库.表名 to 账户@主机名            对特定数据库中的特定表授权
grant 权限 on 数据库.* to 账户@主机名              对特定数据库中的所有表给与授权
grant 权限1,权限2,权限3 on *.* to 账户@主机名      对所有库中的所有表给与多个授权
grant all privileges on *.* to 账户@主机名      对所有库和所有表授权所有权限
grant create,select,insert on *.* to root@'%' identified by "密码"
部分用户和权限sql语句

7.数据库的中文设置

1.查看数据库编码
    \s 
    2.修改mysql的配置文件 /etc/my.cnf ,加入以下信息
    
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    log-error=/var/log/mysqld.log
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    
    3.修改了配置文件,退出sql,在linux中重启服务
    systemctl restart mariadb 

    4.查看数据库创建的编码,只有在更新了数据库编码之后,创建的数据库,才会使用这个编码
    show create database s16;
    
    5.可以测试创建table,写入中文数据
中文设置

 

8.mysql的数据备份和导入

1.通过命令导出全部数据
    mysqldump -u root -p --all-databases > /data/db.dump       # 查看/data/中有没有此文件
    2.mysql的数据文件都放在/var/lib/mysql/* 中,所有的db信息,以及账号密码信息
    rm -rf /var/lib/mysql/*    # 清空mariadb所有数据  删库了。。。
        2.1 重启sql
            systemctl restart mariadb
        2.2 回到3.初始化mariadb
            mysql_secure_installation
    
    3.导入数据库的db文件,在mysql命令行中输入这个命令   (数据库还在的情况)
        source /opt/db.dump            # 在mysql读取备份文件
    
    4.第二种方式导入数据,通过mysql命令
        mysql -uroot -p <  /opt/db.dump     # 登录 时候恢复库
数据库备份和恢复

mysql主从复制的步骤:

环境准备

准备两台linux服务器,安装两个mariadb

主库是:192.168.12.96 mater
从库是:192.168.12.87 slave

主库的操作

1.开启binlog功能,修改/etc/my.cnf 
vim /etc/my.cnf        # 在Linux下打开配置文件追加写入

[mysqld]
server-id=1          # 指明主库的身份id为1
log-bin=mysqls14-bin    # 指明binlog的日志名

2.修改了配置文件,重启mariadb,使得binlog生效
systemctl restart mariadb 

3.登录mysql,检查主库的状态
show master status;

4.创建一个用户,用于进行主从同步
create user 'cai'@'%' identified by '1234';

5.授予账号权限,授予一个从库的身份权限
grant replication slave on *.* to 'cai'@'%';

6.锁定mysql的表,防止数据写入
flush table with read lock;

7.主从同步,将从库与主库的数据,保持一致后,它俩都在同一个起跑线,然后解除锁表,一同写入数据,保证数据一致性
  1.导出当前的数据,用于slave机器导入数据,保证在一个起始点
  mysqldump -u root -p --all-databases > /data/db.dump     # 备份数据放在/data/路径下
  

  2.将此db.dump文件远程传输给 slave机器,用于导入
  scp /data/db.dump root@192.168.12.87:/tmp/     # 在主机发送到从机下的/tmp/文件夹下


8.查看主库的状态信息,binlog信息
show master status;

 

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+---------------------+----------+--------------+------------------+
| mysqls14-bin.000001 | 680 | |

# 从库命令配置中需要这两个值

 

9.解锁表,开始主从同步
unlock tables;

从库的设置

1.在/etc/my.cnf当中打开添加server-id 
vim /etc/my.cnf    #编辑从机的配置文件 
server-id=10    # 指明从库的身份id为10(主库为1,从库就可以是1之后的数字)

2.重启myariadb

systemctl restart mariadb 

3.查看slave机器的身份信息
show variables like 'server_id';
show variables like 'log_bin';

4.通过命令,开启主从同步技术
change master to master_host='192.168.12.96',
master_user='cai',
master_password='1234',
master_log_file='mysqls14-bin.000001',                                
master_log_pos=681;

5.开启slave 
start slave;

6.检查slave状态,检查两条参数,如果都是yes,即主从ok

show slave status\G     #  查看状态命令

其中两条是如下状态就可以了

# Slave_IO_Running: Yes    
# Slave_SQL_Running: Yes


7.此时可以在主库中写入数据,查看从库中是否生成了记录

登录slave从库,导入主库的数据信息(mysql命令)
 source /tmp/db.dump     # 在从库的sql中加载读取主库的备份

主库:插入数据

从库:检查数据

posted @ 2018-12-06 19:49  洛丶丶丶  阅读(503)  评论(0编辑  收藏  举报