美文网首页
centos7 源码安装mysql(附有主从复制配置文件) bo

centos7 源码安装mysql(附有主从复制配置文件) bo

作者: 永远少年1024 | 来源:发表于2021-06-28 11:39 被阅读0次

    yum 安装请参考 https://www.yuque.com/u1733081/hsolox/brcy5h

    卸载mariadb

    在CentOS中默认安装有MariaDB,这个是MySQL的分支,源码安装之前需要先写在mariadb

    rpm -qa | grep mariadb
    rpm -e --nodeps  mariadb-5.5.52-1.el7.x86_64
    rpm -e --nodeps  mariadb-libs-5.5.52-1.el7.x86_64
    rpm -e --nodeps  mariadb-server-5.5.52-1.el7.x86_64
    sudo yum install -y cmake make gcc gcc-c++ bison  ncurses ncurses-devel libaio-devel
    

    下载mysql

    https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.20.tar.gz

    http://downloads.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz

    如果是下载的无boost版本的mysql,需要单独下载boost

    boost版本下载

    https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-boost-5.7.31.tar.gz

    可以去mysql官网下载,两个版本的都有

    image.png

    可以选择最新的GA版本https://dev.mysql.com/downloads/mysql/5.7.html?os=src

    创建用户此用户不可以登录

    groupadd mysql
    useradd -r -g mysql -s /bin/false mysql
    

    在home下面创建mysql 文件夹 设置群组

    mkdir   /home/mysql  
    chown -R mysql:mysql mysql
    

    安装mysql

    1. 创建文件夹
    mkdir   /usr/local/mysql 
    
    1. 移动mysql-boost-5.7.27.tar.gz 到 **/usr/local/mysql** 并解压
    2. 将 boost_1_59_0.tar.gz 解压至 /usr/local/boost 目录
    3. 进入解压目录执行以下命令
    cmake . \
     -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
     -DMYSQL_DATADIR=/home/mysql/data \
     -DDOWNLOAD_BOOST=1 \
     -DWITH_BOOST=/usr/local/boost_1_59_0 \
     -DSYSCONFDIR=/etc \
     -DWITH_INNOBASE_STORAGE_ENGINE=1 \
     -DWITH_PARTITION_STORAGE_ENGINE=1 \
     -DWITH_FEDERATED_STORAGE_ENGINE=1 \
     -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
     -DWITH_MYISAM_STORAGE_ENGINE=1 \
     -DENABLED_LOCAL_INFILE=1 \
     -DENABLE_DTRACE=0 \
     -DDEFAULT_CHARSET=utf8mb4 \
     -DDEFAULT_COLLATION=utf8mb4_general_ci \
     -DWITH_EMBEDDED_SERVER=1
    

    有boost版本的cmake 方式

    cmake \
    -DBUILD_CONFIG=mysql_release \
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
    -DMYSQL_DATADIR=/home/mysql/data \
    -DSYSCONFDIR=/etc \
    -DMYSQL_UNIX_ADDR=/home/mysql/tmp/mysql.sock \
    -DEXTRA_CHARSETS=all. \
    -DDEFAULT_CHARSET=utf8 \
    -DDEFAULT_COLLATION=utf8_general_ci \
    -DWITH_BOOST=boost
    
    1. 编译并安装
    make install
    
    1. 初始化数据库,在/usr/local/mysql/bin/下执行以下命令
    ./mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/home/mysql/data
    
    1. 修改/etc/my.cnf
    主数据库 
    [client]  
    #客户端字符集   
    default-character-set=utf8mb4  
    [mysqld]     
    character_set_server=utf8mb4
    collation_server=utf8mb4_general_ci
    
    basedir=/usr/local/mysql
    datadir=/home/mysql/data
    socket=/home/mysql/tmp/mysql.sock
    pid-file=/home/mysql/data/mysqld.pid
    
    slow-query-log-file=/home/mysql/log/mysql-slow.log
    log-error=/home/mysql/log/mysql_error.log
    
    slow-query-log=on
    lower_case_table_names=1
    sql_mode=TRADITIONAL,ALLOW_INVALID_DATES,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    symbolic-links=0
    
    # 以下为主从复制需要的配置,如果不需要主从复制可以不配置
    #server-id给数据库服务的唯一标识
    server-id=1
    #log-bin设置此参数表示启用binlog功能,并指定路径名称
    log-bin=/home/mysql/mysql-bin/mysql-bin
    sync_binlog=0
    #设置日志的过期天数
    expire_logs_days=7
    #binlog_cache_size此参数表示binlog使用的内存大小
    binlog_cache_size=1024M
    !includedir /etc/my.cnf.d
    
    从数据库
    [client]  
    #客户端字符集   
    default-character-set=utf8mb4  
    [mysqld]     
    character_set_server=utf8mb4
    collation_server=utf8mb4_general_ci
    
    basedir=/usr/local/mysql
    datadir=/home/mysql/data
    socket=/home/mysql/tmp/mysql.sock
    pid-file=/home/mysql/data/mysqld.pid
    
    slow-query-log-file=/home/mysql/log/mysql-slow.log
    log-error=/home/mysql/log/mysql_error.log
    
    slow-query-log=on
    lower_case_table_names=1
    sql_mode=TRADITIONAL,ALLOW_INVALID_DATES,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    symbolic-links=0
    
    # 以下为主从复制需要的配置,如果不需要主从复制可以不配置
    #server-id给数据库服务的唯一标识
    server-id=2
    #read_only设置数据库为只读,防止从库数据修改后,主从数据不一致,但是有Super权限的账号还是有写的权限,所以要某个账号只读的话,可以去掉账号的Super权限
    read_only=1
    #指定需要同步的表
    replicate-wild-do-table=atrm.%
    #binlog_cache_size此参数表示binlog使用的内存大小
    binlog_cache_size=1024M
    
    1. 创建文件夹
    mkdir -p /home/mysql/log  
    mkdir -p /home/mysql/data
    mkdir -p /home/mysq/tmp 
    mkdir -p /home/mysql/mysql-bin 
    并修改权限
    chown -R mysql:mysql log
    chown -R mysql:mysql data
    chown -R mysql:mysql tmp
    chown -R mysql:mysql mysql-bin
    
    1. mysql 加入启动服务
    cp support-files/mysql.server /etc/init.d/mysqld
    chkconfig --add mysqld     # 添加到系统服务
    chkconfig mysqld on        # 开机启动
    
    1. 启动mysql
    systemctl start mysqld
    #查看mysql 状态
    systemctl status mysqld
    #停止myslq
    systemctl stop mysqld
    #重启mysql
    systemctl restart mysqld
    

    10.设置mysql root 可以远程连接

     [root@centos7-tool data]# sudo grep 'temporary password' /var/log/mysqld.log  // 通过这个命令可以查找密码
    
    use mysql
    update user set host = '%' where user = 'root';
    flush privileges; 
    flush privileges;
    #设置mysql 密码
    set password for 'root'@'%'=password('dxxa@2020');
    set password=password('Dxxa@2020');// 上面命令不好使,用这个
    flush privileges;
    #开启3306 防火墙
    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    sudo firewall-cmd --reload
    
    
    // 开启远程连接
    mysql -uroot -p
    use mysql;
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Dxxa@2020'
    flush privileges;
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Dxxa@2020' WITH GRANT OPTION; 
    

    常见问题

    1、The server quit without updating PID file 启动失败,my.cnf配置问题,字符集配置导致错误,或者看下所有指定的文件夹或者文件是否存在,权限是否为mysql chown -R mysql:mysql

    启动报错看下 日志。

    2、Check that you do not already have another mysqld process using the same InnoDB data or log files. 这个错误是线程被占用,ps -ef|grep mysql 杀掉进程重新启动就可以

    3、mysql 提示 mysql 命令不存在;修改 /etc/profile

    vim /etc/profile
    export PATH=$JAVA_HOME/bin:/usr/local/mysql/bin:$PATH
    

    4、****ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

    set password=password('Dxxa@2020');
    
    flush privileges;
    

    简单三步骤

    CREATE DATABASE dtcp DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    CREATE USER 'dtcp'@'%' IDENTIFIED BY 'Dtcp@2020';
    GRANT ALL PRIVILEGES ON dtcp.* TO 'dtcp'@'%'  WITH GRANT OPTION;
    

    创建用户

    1.创建用户:
    # 指定ip:192.118.1.1的mjj用户登录
    create user 'alex'@'192.118.1.1' identified by '123';
    # 指定ip:192.118.1.开头的mjj用户登录
    create user 'alex'@'192.118.1.%' identified by '123';
    # 指定任何ip的mjj用户登录
    create user 'alex'@'%' identified by '123';
    
    2.删除用户
    drop user '用户名'@'IP地址';
    
    
    3.修改用户
    rename user '用户名'@'IP地址' to '新用户名'@'IP地址';
    
    4.修改密码
    set password for '用户名'@'IP地址'=Password('新密码');
    

    创建数据库

    CREATE DATABASE IF NOT EXISTS xxx_db DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    

    对当前用户授权

    #查看权限
    show grants for '用户'@'IP地址'
    
    #授权 mjj用户仅对db1.t1文件有查询、插入和更新的操作
    grant select ,insert,update on db1.t1 to "alex"@'%';
    
    # 表示有所有的权限,除了grant这个命令,这个命令是root才有的。mjj用户对db1下的t1文件有任意操作
    grant all privileges  on db1.t1 to "alex"@'%';
    #mjj用户对db1数据库中的文件执行任何操作
    grant all privileges  on db1.* to "alex"@'%';
    #mjj用户对所有数据库中文件有任何操作
    grant all privileges  on *.*  to "alex"@'%';
     
    #取消权限
     
    # 取消mjj用户对db1的t1文件的任意操作
    revoke all on db1.t1 from 'alex'@"%";  
    
    # 取消来自远程服务器的mjj用户对数据库db1的所有表的所有权限
    
    revoke all on db1.* from 'alex'@"%";  
    
    取消来自远程服务器的mjj用户所有数据库的所有的表的权限
    revoke all privileges on *.* from 'alex'@'%';
    

    MySql备份命令行操作

    # 备份:数据表结构+数据
    mysqdump -u root db1 > db1.sql -p
    
    
    # 备份:数据表结构
    mysqdump -u root -d db1 > db1.sql -p
    
    #导入现有的数据到某个数据库
    #1.先创建一个新的数据库
    create database db10;
    # 2.将已有的数据库文件导入到db10数据库中
    mysqdump -u root -d db10 < db1.sql -p
    

    相关文章

      网友评论

          本文标题:centos7 源码安装mysql(附有主从复制配置文件) bo

          本文链接:https://www.haomeiwen.com/subject/eprqultx.html