• Linux CentOS 安装MySql以及搭建MySql主从复制


    前言

    在之前的博客中,有过几篇都写了关于mysql在linux下的搭建教程,可能以后还会再写,但是又不想重复在写, 于是便想单独将此抽出来,单独写成一篇博客,并详细记录一些安装过程以及遇到的问题解决办法。顺便也将MySql的主从搭建教程也写在一起,方便以后查阅。

    一、MySql安装

    在安装MySql之前,查看是否以及安装过MySql,如果已经安装,但是不符合要求的话就卸载。
    1,查找以前是否装有mysql
    先输入:

    rpm -qa|grep -i mysql
    

    查看是否安装了mysql
    这里写图片描述

    2,停止mysql服务、删除之前安装的mysql
    输入:

    ps -ef|grep mysql
    

    删除命令
    输入:

    rpm -e –nodeps 包名
    

    这里写图片描述
    如果提示依赖包错误,则使用以下命令尝试

    rpm -ev 包名 --nodeps
    

    如果提示错误:error: %preun(xxxxxx) scriptlet failed, exit status 1
    则用以下命令尝试:

    rpm -e --noscripts 包名
    

    3、查找并删除mysql目录
    查找结果如下:

    find / -name mysql
    

    删除对应的mysql目录
    具体的步骤如图:查找目录并删除
    这里写图片描述
    注意:卸载后/etc/my.cnf不会删除,需要进行手工删除

    4、再次查找机器是否安装mysql

    rpm -qa|grep -i mysql
    

    这里写图片描述

    Mysql有两种安装模式,可自行选择。

    1,yum安装

    首先查看mysql 是否已经安装
    输入:

    rpm -qa | grep mysql   
    

    如果已经安装,想删除的话
    输入:
    普通删除命令:

    rpm -e mysql
    

    强力删除命令:

    rpm -e --nodeps mysql    
    

    依赖文件也会删除

    安装mysql
    输入:

    yum list mysql-server  
    

    如果没有,则通过wget命令下载该包
    输入:

    wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm   
    

    下载成功之后,再输入命令安装

    yum install mysql-server
    

    在安装过程中遇到选择输入y就行了
    这里写图片描述
    这里写图片描述

    安装成功后,输入 service mysqld start 启动服务
    输入:
    mysqladmin -u root -p password '123456'
    来设置密码
    输入之后直接回车(默认是没有密码的)
    然后再输入
    mysql -u root -p
    这里写图片描述
    通过授权法更改远程连接权限
    输入: grant all privileges on . to 'root'@'%' identified by '123456';
    注:第一个’root’是用户名,第二个’%’是所有的ip都可以远程访问,第三个’123456’表示 用户密码 如果不常用 就关闭掉
    输入:flush privileges; //刷新

    在防火墙关闭之后,使用SQLYog之类的工具测试是否能正确连接

    这里写图片描述

    2,编译包安装

    Mysql文件准备

    将下载好的mysql安装包上传到linux服务器
    解压mysql解压包,并移动到/usr/local目录下,重命名为mysql。
    命令:

    tar -xvf mysql-5.6.21-linux-glibc2.5-x86_64.tar.gz
    mv mysql-5.6.21-linux-glibc2.5-x86_64 /usr/local
    cd /usr/local
    mv mysql-5.6.21-linux-glibc2.5-x86_64 mysql
    

    这里写图片描述

    注: mysql默认的路径是就是/usr/local/mysql ,如果安装的地方更改,需要更改相应的配置文件。

    安装mysql

    切换到mysql的目录 /usr/local/mysql
    输入:

     ./scripts/mysql_install_db --user=mysql
    

    这里写图片描述
    成功安装mysql之后,输入
    service mysql start 或 /etc/init.d/mysql start

    这里写图片描述
    查看是否启动成功
    输入:

     ps -ef|grep mysql
    

    切换到 /usr/local/mysql/bin 目录下
    设置密码
    mysqladmin -u root password '123456'入mysql
    输入:

    mysql -u root -p
    

    设置远程连接权限
    输入:

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

    然后输入:

    flush privileges;
    

    说明: 第一个’root’是用户名,第二个’%’是所有的ip都可以远程访问,第三个’123456’表示用户密码 如果不常用就关闭掉。

    使用本地连接工具连接测试

    这里写图片描述

    二、MySql搭建遇到的错误解决办法

    1,mysql离线安装出现:Can't change to run as user 'mysql' ; Please check that the user exists!

    原因:没有该用户。
    解决办法:创建该用户!
    例如:
    添加用户:

    groupadd -g 315 mysql
    

    用户加入mysql:

    useradd -u 315 -g mysql -d /usr/local/mysql -M mysql
    

    再次输入

     ./scripts/mysql_install_db --user=mysql
    

    成功!
    这里写图片描述

    2,安装完mysql之后,输入service mysql start 提示 mysql: unrecognized service。

    问题原因: 是因为/etc/init.d/ 不存在 mysql 这个命令,所以无法识别。
    解决办法:
    1.首先查找mysql.server文件在哪
    输入:

    find  /  -name mysql.server
    

    2.将mysql.server 复制到/etc/init.d/目录下,并重命名为mysql或mysqld

    输入:

    cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
    

    3.测试是否可以使用该命令
    输入:

    service mysql status
    

    service mysqld status
    

    这里写图片描述

    3,mysql数据导入报错

    错误:Got a packet bigger than‘max_allowed_packet’bytes的问题

    2个解决方法:

    1.临时修改:mysql>set global max_allowed_packet=524288000;修改 #512M

    2.永久修改: 编辑my.cnf, 在 [MySQLd] 部分添加一句(如果存在,调整其值就可以):
    max_allowed_packet=10M

    成功之后重启mysql。

    4,mysql数据库关于max_allowed_packet的问题

    主要是mysql的JDBC连接限制了最大包长度1024B,即1KB
    查询当前数据库的包长度显示: show VARIABLES like '%max_allowed_packet%';
    修改此参数
    解决方案一(临时): 进入msyql
    输入:
    set global max_allowed_packet = 2*1024*10
    更改最大值

    解决方案二(永久):修改mysql.cnf(windows下my.ini),在[mysqld]段或者mysql的server配置段 进行修改。

    max_allowed_packet = 20K。
    

    修改成功后,重启mysql。

    三、MySql 用到的一些命令

    1.查看mysql连接数

      SHOW FULL PROCESSLIST;
    

    2.查看mysql的配置

    show variables like "%innodb%";
    

    3.查看mysql事件是否开启

    show variables like 'event_scheduler';
    

    4.查看mysql锁的状态

    是否锁表:

     SHOW OPEN TABLES WHERE In_use > 0;
    
    SHOW INNODB STATUS/G;
    

    5.查看mysql data的存放位置

    SHOW VARIABLES LIKE '%datadir%'
    

    6.查看mysql 的超时时间设置

    show variables like '%timeout%';
    

    四、MySql修改密码

    1,知道原来的myql数据库的root密码;

    在终端命令行修改

    输入

     mysqladmin -u root -p password "新密码"
    

    回车

     Enter password: 【输入原来的旧密码】
    

    登录mysql系统修改

    进入mysql
    输入:

     mysql -uroot -p 回车 Enter password: 【输入原来的密码】
    

    进入之后
    输入:

    use mysql;
    update user set password=password("新密码") where user='root';
    flush privileges;
    

    然后使用刚才输入的新密码即可登录。

    2,不知道原来的myql的root的密码;

    首先,你必须要有操作系统的root权限了。要是连系统的root权限都没有的话,先考虑root系统再走下面的步骤。 类似于安全模式登录系统。
    需要先停止mysql服务

    service mysql stop
    

    /etc/init.d/mysql stop
    

    注:如果mysql不行,就用mysqld
    当提示mysql已停止后进行下一步操作

    在终端命令行输入:

    mysqld_safe --skip-grant-tables &  
    

    输入mysql登录mysql系统

    use mysql;
    UPDATE user SET password=password("新密码") WHERE user='root';      
    flush privileges;
    exit;
    

    重新启动mysql服务
    这样新的root密码就设置成功了。

    五、MySql主从搭建

    主从搭建参考:http://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label2

    说明:搭建MySql的主从时,如复制名称出现了错误,那么尝试使用用手动输入命令。

    1,事前准备

    信息
    操作系统:CentOS6.8
    Mysql:5.6
    IP:192.169.2.156 (主),192.169.2.98(从)

    确保MySql已经成功安装 !

    2,配置更改

    更改mysql中的my.cnf文件
    添加如下:
    主(Master):

         
    #任意自然数n,只要保证两台MySQL主机不重复就可以了。
    server-id=1
    #开启二进制日志
    log-bin=mysql-bin  
    #步进值auto_imcrement。一般有n台主MySQL就填n 
    auto_increment_increment=2
    #起始值。一般填第n台主MySQL。此时为第一台主MySQL   
     auto_increment_offset=1 
    #忽略指定的数据库 
    binlog-ignore=mysql   
    binlog-ignore=information_schema  
    #要同步的数据库(多个可以使用逗号隔开),默认所有库
    replicate-do-db=DBTEST  
    

    从(Slave):

    server-id=2
    log-bin=mysql-bin
    auto_increment_increment=2
    auto_increment_offset=2
    replicate-do-db=DBTEST 
    

    更改完配置之后重启!

    3,主从配置

    主(Master)
    master新建slave用户
    进入MySql之后输入:

    grant replication slave on *.* to 'slave_account'@'192.169.2.98' identified by '123456'; 
    

    说明: 设置一个slave_account用户拥有REPLICATION SLAVE权限,可以访问的ip为192.169.2.98,并设置密码为123456。
    如果想某个网段的服务器都能登录,可以使用192.168.2.% 。表示192.168.2.0-192.168.2.255的Server都可以用slave_account用户登陆主服务器。
    如果想所有的服务器都能登录,那么可以设置为 % 。

    然后输入:

    flush privileges;
    

    查看信息,并记录下文件名称和分区ID

    SHOW MASTER STATUS;
    

    这里写图片描述

    从(Slave):
    获取master的授权信息之后,输入slave的授权命令:

    change master to master_host='192.169.2.156',master_user='slave_account',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=427;
    

    确保成功执行!

    4,主从测试

    从(Slave):
    开始主从复制:
    输入:

    START SLAVE;
    

    查看主从复制是否配置成功:

    SHOW SLAVE STATUSG
    

    这里写图片描述

    说明:当看到Slave_IO_Running: YES、Slave_SQL_Running: YES 说明成功,否则失败。

    主(Master)
    首先创建一个DBTEST数据库,然后创建test表,并插入两条数据。
    这里为了看起来更加明朗,我是用的是SQLYog 工具进行操作的。
    进入mysql执行如下脚本:

    CREATE DATABASE`DBTEST`;
    USE `DBTEST`;
    CREATE TABLE `test` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT,
      `name` varchar(16) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
    
    insert  into `test`(`id`,`name`) values (1,'张三'),(2,'李四');
    

    查看
    输入:

    select * from test;
    

    这里写图片描述

    从(Slave):
    查看
    输入:

    select * from test;
    

    这里写图片描述

    从数据库并没有执行脚本,但是信息一致,说明成功同步了。

    继续测试,在主(master)删除一条数据,查看从的数据。
    主(Master)
    这里写图片描述

    从(Slave):
    这里写图片描述

    可以看到已经完全同步了!

    那么本篇教程就到此结束了,谢谢阅读!

  • 相关阅读:
    hdu 3018
    poj 1833 排列
    poj 1256 Anagram
    CF 548B Mike and Fun
    CF 548A
    【冰茶几专题】F
    【冰茶几专题】C
    535 C.Tavas and karafs
    [WA]cf 534 D. Handshakes
    cf 534C. Polycarpus' Dice
  • 原文地址:https://www.cnblogs.com/xuwujing/p/8511693.html
Copyright © 2020-2023  润新知