linux上mysql基本使用和主从配置

一、安装mysql

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。
开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。

  1、yum安装

  2、添加mariadb yum库安装

1、首先在 RHEL/CentOS 和 Fedora 操作系统中添加 MariaDB 的 YUM 配置文件 MariaDB.repo 文件。

#编辑创建mariadb.repo仓库文件
vi /etc/yum.repos.d/MariaDB.repo
2、添加repo仓库配置
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
3、当 MariaDB 仓库地址添加好后,你可以通过下面的一行命令轻松安装 MariaDB。

yum install MariaDB-server MariaDB-client -y

# 如果MariaDB-server MariaDB-client不存在时,可以yum search Mariadb查看有哪些版本

  3、启动mariadb相关命令

ariadb数据库的相关命令是:

systemctl start mariadb  #启动MariaDB

systemctl stop mariadb  #停止MariaDB

systemctl restart mariadb  #重启MariaDB

systemctl enable mariadb  #设置开机启动

  4、进入到mysql命令端

mysql -uroot -p

二、初识化mysql

在确认 MariaDB 数据库软件程序安装完毕并成功启动后请不要立即使用。为了确保数据 库的安全性和正常运转,需要先对数据库程序进行初始化操作。这个初始化操作涉及下面 5 个 步骤。
➢ 设置 root 管理员在数据库中的密码值(注意,该密码并非 root 管理员在系统中的密 码,这里的密码值默认应该为空,可直接按回车键)。
➢ 设置 root 管理员在数据库中的专有密码。
➢ 随后删除匿名账户,并使用 root 管理员从远程登录数据库,以确保数据库上运行的业
务的安全性。
➢ 删除默认的测试数据库,取消测试数据库的一系列访问权限。
➢ 刷新授权列表,让初始化的设定立即生效。

  1、确保mariadb服务器启动后,执行命令初始化

mysql_secure_installation

  初始化mysql

 

三、mysql基本命令

#修改mysql密码
MariaDB [(none)]> set password = PASSWORD('redhat123');

   1、创建用户:生产环境里不会死磕root用户,为了数据库的安全以及和其他用户协同管理数据库,就需要创建其他数据库账户,然后分配权限,满足工作需求。

MariaDB [(none)]> create user yuchao@'127.0.0.1' identified by 'redhat123';

MariaDB [(none)]> use mysql;

MariaDB [mysql]> select host,user,password from user where user='yuchao';

   切换普通用户yuchao,查看数据库信息,发现无法看到完整的数据库列表

[root@master ~]# mysql -uyuchao -p -h 127.0.0.1

MariaDB [(none)]> show databases;

  2、权限分配:mysql使用grant命令对账户进行授权,grant命令常见格式如下

rant 权限 on 数据库.表名 to 账户@主机名            对特定数据库中的特定表授权
grant 权限 on 数据库.* to 账户@主机名              对特定数据库中的所有表给与授权
grant 权限1,权限2,权限3 on *.* to 账户@主机名      对所有库中的所有表给与多个授权
grant all privileges on *.* to 账户@主机名      对所有库和所有表授权所有权限

    退出数据库,使用root登录,开始权限设置

[root@master ~]# mysql -uroot -p

MariaDB [(none)]> use mysql;

MariaDB [(none)]> grant all privileges on *.* to yuchao@127.0.0.1;

MariaDB [mysql]> show grants for yuchao@127.0.0.1;

  移除权限

MariaDB [(none)]> revoke all privileges on *.* from yuchao@127.0.0.1;

  3、配置mysql:

    中文编码设置,编辑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

    授权配置

远程连接设置哦设置所有库,所有表的所有权限,赋值权限给所有ip地址的root用户
mysql > grant all privileges on *.* to root@'%' identified by 'password';
#创建用户
mysql > create user 'username'@'%' identified by 'password';
#刷新权限
flush privileges;

四、数据库备份与恢复

mysqldump命令用于备份数据库数据

[root@master ~]# mysqldump -u root -p --all-databases > /tmp/db.dump

2.导出db1、db2两个数据库的所有数据

mysqldump -uroot -proot --databases db1 db2 >/tmp/user.sql

进入mariadb数据库,删除一个db

[root@master ~]# mysql -uroot -p

MariaDB [(none)]> drop database s11;

进行数据恢复,吧刚才重定向备份的数据库文件导入到mysql中

[root@master ~]# mysql -uroot -p < /tmp/db.dump

五、主从复制

主库设置:
    1.修改配置文件,开启主从同步的功能
        #修改配置文件
        vim /etc/my.cnf
        #修改内容
        #解释:server-id服务的唯一标识(主从之间都必须不同);log-bin启动二进制日志名称为mysql-bin 
          [mysqld]
          server-id=1
          log-bin=mysql-bin

        #重启mariadb
        systemctl start mariadb
        #重启后,mysql主库已经开启同步功能,创建了mysql-bin日志文件
        
    2.创建用于主从同步的账号
        create user 'username'@'%' identified by 'password';
    3.给与账号slave的权限
        grant replication slave on *.* to 'username'@'%';
    4.检查一下主库创建的账号信息
        select user,host from mysql.user;
    5.检查授权账号的权限信息
        show grants for username@'%';
    6.实现主库的锁表,防止数据写入
        flush table with read lock;
    7.此时可以检查主库的日志状态,已经锁表了,防止日志位置发生变化
        show master status;
    8.开始数据备份,导出主库的已经存在数据,然后用于从库写入
        mysqldump -uroot -p  --all-databases > /data/my_all.dump
    9.将主库的数据备份文件,scp到从库机器上,然后从库mysql导入数据
        scp /tmp/all.dump root@10.0.0.11:/opt/
主库设置
10.在从库上导入主库的最新数据,以便于数据一致性
        1.登录slave数据库
        3.删除slave当前机器所有的database,清空database数据,为了保证从库干净
        2.登录数据库,导入数据
            source /opt/all.dump
    11.修改配置文件,添加用于同步的配置,和主库区别开
        vi /etc/my.cnf   写入配置
        server-id=5
    12.重启mariadb 从库 
    13.检查从库的各项参数
        show variables like 'log_bin';
        show variables like 'server_id';
    14.通过此命令,将slave库同于于master库
        change master to master_host='10.0.0.10',
        master_user='bhf',
        master_password='bhfdsb',
        master_log_file='mysql-bin.000001',
        master_log_pos=1485;
    15.开启主从同步的开关
        start slave;
    16.检查复制的状态
        show slave statusG 
    17.检查从库同步的两条参数,均为yes确认同步成功
            Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
    18.此时已经确认主从同步配置ok,前往主库解锁数据库,然后数据写入查看结果
        master上:
            unlock tables;  解锁数据库
从库设置
原文地址:https://www.cnblogs.com/aizhinong/p/12827821.html