美文网首页我爱编程
Mysql 安装和配置

Mysql 安装和配置

作者: 指尖的跳跃 | 来源:发表于2016-08-14 22:48 被阅读737次

    Mysql 安装

    • Mysql 安装
      • 官网:http://www.mysql.com/
      • 官网下载:http://dev.mysql.com/downloads/mysql/
      • 官网 5.5 下载:http://dev.mysql.com/downloads/mysql/5.5.html#downloads
      • 官网 5.6 下载:http://dev.mysql.com/downloads/mysql/5.6.html#downloads
      • 官网 5.7 下载:http://dev.mysql.com/downloads/mysql/5.7.html#downloads
      • 官网帮助中心:http://dev.mysql.com/doc/refman/5.6/en/source-installation.html
      • 此时(20160502) Mysql 5.5 最新版本为:5.5.48
      • 此时(20160502) Mysql 5.6 最新版本为:5.6.29
      • 此时(20160502) Mysql 5.7 最新版本为:5.7.11
      • 我个人习惯 /opt 目录下创建一个目录 setups 用来存放各种软件安装包;在 /usr 目录下创建一个 program 用来存放各种解压后的软件包,下面的讲解也都是基于此习惯
      • 我个人已经使用了第三方源:EPEL、RepoForge,如果你出现 yum install XXXXX 安装不成功的话,很有可能就是你没有相关源,请查看我对源设置的文章
      • Mysql 5.6 下载:wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.29.tar.gz (大小:31 M)
      • Mysql 5.7 下载:wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.11.tar.gz (大小:47 M)
      • 我们这次安装以 5.6 为实例
        • 进入下载目录:cd /opt/setups
        • 解压压缩包:tar zxvf mysql-5.6.29.tar.gz
        • 移到解压包:mv /opt/setups/mysql-5.6.29 /usr/program/
        • 安装依赖包、编译包:yum install -y make gcc-c++ cmake bison-devel ncurses-devel
        • 进入解压目录:cd /usr/program/mysql-5.6.29/
        • 生成安装目录:mkdir -p /usr/program/mysql/data
        • 生成配置(使用 InnoDB):sudo cmake -DCMAKE_INSTALL_PREFIX=/usr/program/mysql -DMYSQL_DATADIR=/usr/program/mysql/data -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS:STRING=utf8 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DENABLED_LOCAL_INFILE=1
        • 编译:sudo make,这个过程比较漫长,一般都在 30 分钟左右,具体还得看机子配置,如果最后结果有 error,建议删除整个 mysql 目录后重新解压一个出来继续处理
        • 安装:sudo make install
        • 配置开机启动:
          • sudo cp /usr/program/mysql-5.6.29/support-files/mysql.server /etc/init.d/mysql
          • sudo chmod 755 /etc/init.d/mysql
          • sudo chkconfig mysql on
        • 复制一份配置文件: sudo cp /usr/program/mysql-5.6.29/support-files/my-default.cnf /etc/my.cnf
        • 删除安装的目录:rm -rf /usr/program/mysql-5.6.29/
        • 添加组和用户及安装目录权限
          • sudo groupadd mysql #添加组
          • sudo useradd -g mysql mysql -s /bin/false #创建用户mysql并加入到mysql组,不允许mysql用户直接登录系统
          • sudo chown -R mysql:mysql /usr/program/mysql/data #设置MySQL数据库目录权限
        • 初始化数据库:sudo /usr/program/mysql/scripts/mysql_install_db --basedir=/usr/program/mysql --datadir=/usr/program/mysql/data --skip-name-resolve --user=mysql
        • 启动 Mysql 服务器:service mysql start
        • 查看是否已经启动了:ps aux | grep mysql
        • 常用命令软连接,才可以在终端直接使用:mysql 和 mysqladmin 命令
          • sudo ln -s /usr/program/mysql/bin/mysql /usr/bin
          • sudo ln -s /usr/program/mysql/bin/mysqladmin /usr/bin

    修改 root 账号密码

    • 默认安装情况下,root 的密码是空,所以为了方便我们可以设置一个密码,假设我设置为:123456
    • 终端下执行:mysql -uroot
      • 现在进入了 mysql 命令行管理界面,输入:SET PASSWORD = PASSWORD('123456');
    • 修改密码后,终端下执行:mysql -uroot -p
      • 根据提示,输入密码进度 mysql 命令行状态。
    • 如果你在其他机子上连接该数据库机子报:Access denied for user 'root'@'localhost' (using password: YES)
      • 解决办法:
      • 在终端中执行:service mysql stop
      • 在终端中执行:/usr/program/mysql/bin/mysqld --skip-grant-tables
        • 此时 MySQL 服务会一直处于监听状态,你需要另起一个终端窗口来执行接下来的操作
        • 在终端中执行:mysql -u root mysql
        • 进入 MySQL 命令后执行:UPDATE user SET Password=PASSWORD('填写你要的新密码') where USER='root';FLUSH PRIVILEGES;
        • 重启 MySQL 服务:service mysql restart

    Mysql 配置

    • 官网配置参数解释:http://dev.mysql.com/doc/refman/5.6/en/mysqld-option-tables.html
    • 找一下当前系统中有多少个 my.cnf 文件:find / -name "my.cnf",我查到的结果:
      /etc/my.cnf
      /usr/program/mysql/my.cnf
      /usr/program/mysql/mysql-test/suite/ndb/my.cnf
      /usr/program/mysql/mysql-test/suite/ndb_big/my.cnf
      .............
      /usr/program/mysql/mysql-test/suite/ndb_rpl/my.cnf
      
      • 保留 /etc/my.cnf/usr/program/mysql/mysql-test/ 目录下配置文件,其他删除掉。

    MySQL 主从复制

    环境说明和注意点

    • 假设有两台服务器,一台做主,一台做从
      • MySQL 主信息:
        • IP:12.168.1.113
        • 端口:3306
      • MySQL 从信息:
        • IP:12.168.1.115
        • 端口:3306
    • 注意点
      • 主 DB server 和从 DB server 数据库的版本一致
      • 主 DB server 和从 DB server 数据库数据一致
      • 主 DB server 开启二进制日志,主 DB server 和从 DB server 的 server-id 都必须唯一
    • 优先操作:
      • 把主库的数据库复制到从库并导入

    主库机子操作

    • 主库操作步骤

      • 创建一个目录:mkdir -p /usr/program/mysql/data/mysql-bin
      • 主 DB 开启二进制日志功能:vim /etc/my.cnf
        • 添加一行:log-bin = /usr/program/mysql/data/mysql-bin
        • 指定同步的数据库,如果不指定则同步全部数据库,其中 ssm 是我的数据库名:binlog-do-db=ssm
      • 重启主库 MySQL 服务
      • 进入 MySQL 命令行状态,执行 SQL 语句查询状态:SHOW MASTER STATUS;
        • 在显示的结果中,我们需要记录下 FilePosition 值,等下从库配置有用。
      • 设置授权用户 slave01 使用 123456 密码登录主库,这里 @ 后的 IP 为从库机子的 IP 地址,如果从库的机子有多个,我们需要多个这个 SQL 语句。
      grant replication slave on *.* to 'slave01'@'192.168.1.135' identified by '123456';
      flush privileges;
      

    从库机子操作

    • 从库操作步骤
    • 测试从库机子是否能连上主库机子:sudo mysql -h 192.168.1.105 -u slave01 -p,必须要连上下面的操作才有意义。
      • 由于不能排除是不是系统防火墙的问题,所以建议连不上临时关掉防火墙:service iptables stop
      • 或是添加防火墙规则:
        • 添加规则:sudo iptables -I INPUT -p tcp -m tcp --dport 3306 -j ACCEPT
        • 保存规则:sudo service iptables save
        • 重启 iptables:sudo service iptables restart
    • 修改配置文件:vim /etc/my.cnf,把 server-id 改为跟主库不一样
    • 在进入 MySQL 的命令行状态下,输入下面 SQL:
    CHANGE MASTER TO
    master_host='192.168.1.200',
    master_user='slave01',
    master_password='123456',
    master_port=3306,
    master_log_file='mysql3306-bin.000006',>>>这个值复制刚刚让你记录的值
    master_log_pos=1120;>>>这个值复制刚刚让你记录的值
    
    • 执行该 SQL 语句,启动 slave 同步:START SLAVE;
    • 执行该 SQL 语句,查看从库机子同步状态:SHOW SLAVE STATUS;
    • 在查看结果中必须下面两个值都是 Yes 才表示配置成功:
      • Slave_IO_Running:Yes
        • 如果不是 Yes 也不是 No,而是 Connecting,那就表示从机连不上主库,需要你进一步排查连接问题。
      • Slave_SQL_Running:Yes
    • 如果你的 Slave_IO_Running 是 No, 那你可以检查从库下的错误日志:cat /usr/program/mysql/data/mysql-error.log
      • 如果里面提示 uuid 错误,你可以编辑从库的这个配置文件:vim /usr/program/mysql/data/auto.cnf,把配置文件中的:server-uuid 值随便改一下,保证和主库是不一样的。

    资料

    相关文章

      网友评论

        本文标题:Mysql 安装和配置

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