• 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;  解锁数据库
    从库设置
  • 相关阅读:
    YTU 2405: C语言习题 牛顿迭代法求根
    学军中学推理社2017届招新试题
    UWP开发入门系列笔记之(零):UWP的前世今生
    微信开发基础教程
    text-align:center与<CENTER>的区别
    css中em与px的区别
    text-align 属性规定元素中的文本的水平对齐方式。
    常用颜色代码
    CSS中font-style的属性有Italic oblique,它们俩的区别是什么呢?
    css对大小写不敏感,空格不会影响css在浏览器的工作效果
  • 原文地址:https://www.cnblogs.com/aizhinong/p/12827821.html
Copyright © 2020-2023  润新知