CentOS 7.2 安装配置mysql主从服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS 7.2 安装配置mysql主从服务器相关的知识,希望对你有一定的参考价值。

mysql官方压缩包安装:


 

1:下载mysql官方版本,此处以目前最新版本5.7.14为例,下载的64位版本文件为:

mysql-5.7.14-linux-glibc2.5-x86_64.tar

 

2:解压文件

mv mysql-5.7.14-linux-glibc2.5-x86_64.tar /opt/mysql-5.7.14-linux-glibc2.5-x86_64.tar
tar -zvxf mysql-5.7.14-linux-glibc2.5-x86_64.tar.gz
mv mysql-5.7.14-linux-glibc2.5-x86_64 /data1/
mv mysql-5.7.14-linux-glibc2.5-x86_64 mysql

这里/data1是服务器上的挂载扩展点,因此放在该挂载点下,并将解压文件夹改名为mysql

 

3:创建mysql用户及用户组

groupadd mysql
useradd -r -g mysql mysql

这里-r表示该用户为系统用户,不能用于登录,可通过以下查看组及用户信息:

cat /etc/group | grep mysql
cat /etc/passwd | grep mysql

 

4:变更mysql文件夹所属用户及组

chown -R mysql ./mysql
chgrp -R mysql ./mysql

 

5:mysql初始化

cd /data1/mysql
./bin/mysql_install_db --user=mysql --basedir=/data1/mysql --datadir=/data1/mysql/data/

正常情况下会出现如下结果:

2016-09-05 16:09:33 [WARNING] mysql_install_db is deprecated. Please consider switching to mysqld --initialize
2016-09-05 16:09:35 [WARNING] The bootstrap log isnt empty:
2016-09-05 16:09:35 [WARNING] 2016-09-05T08:09:33.109112Z 0 [Warning] --bootstrap is deprecated. Please consider using --initialize instead
2016-09-05T08:09:33.109668Z 0 [Warning] Changed limits: max_open_files: 1024 (requested 5000)
2016-09-05T08:09:33.109675Z 0 [Warning] Changed limits: table_open_cache: 431 (requested 2000)

 

6:编辑启动及配置文件

vim /data1/mysql/support-files/my-default.cnf

将配置文件内容按照如下修改:

技术分享
[client]
default-character-set=gbk
[mysqld]
character-set-server=gbk
max_allowed_packet=60MB
max_connections=2000
datadir=/data1/mysql
socket=/data1/mysql/mysql.sock
symbolic-links=0
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set=gbk
socket=/data1/mysql/mysql.sock
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
View Code

也可以将log及pid文件都改为/data1目录(有人反映会遇到/var/run权限不足等问题)。

 

 

vim /data1/mysql/support-files/mysql.server

启动文件内修改basedir及datadir内容:

basedir=/data1/mysql
datadir=/data1/mysql/data

 

同时,为了在首次启动后有权限登录mysql,先在启动指令(start)中取消权限验证:

case "$mode" in
  start)
    # Start daemon

    # Safeguard (relative paths, core dumps..)
    cd $basedir

    echo $echo_n "Starting MySQL"
    if test -x $bindir/mysqld_safe
    then
      # Give extra arguments to mysqld with the my.cnf file. This script
      # may be overwritten at next upgrade.
      $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args --skip-grant-tables >/dev/null 2>&1 &
      wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

      # Make lock for RedHat / SuSE
      if test -w "$lockdir"
      then
        touch "$lock_file_path"
      fi

      exit $return_value
    else
      log_failure_msg "Couldn‘t find MySQL server ($bindir/mysqld_safe)"
    fi
    ;;

在mysqld_safe启动指令的参数中,暂时加入“--skip-grant-tables”参数,这一步非常重要,否则会报各种类似错误:

ERROR 1045 (28000): Access denied for user root@localhost (using password: YES).
ERROR 1045 (28000): Access denied for user root@localhost (using password: NO).

即使正确地用mysql临时生成的密码(/root/.mysql_secret)也是如此。

 

然后将配置文件、启动文件copy至目的地:

cp -af ./my-default.cnv /etc/my.cnf
cp -af ./mysql.server /etc/init.d/mysqld

 

7:配置mysql的环境变量

vim /etc/profile

在末尾添加:

export PATH=$PATH:/data1/mysql/bin

生效环境变量:

source /etc/profile

 

8:配置mysql启动服务

chkconfig --add mysqld
chkconfig --level 35 mysql on
chkconfig

正常情况下mysqld已设置为系统服务:

mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:off
netconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:off
network            0:off    1:off    2:on    3:on    4:on    5:on    6:off

 

9:创建自定义的日志目录(可选)

如果之前配置文件中日志目录修改为/data1/mysql/log,则需要手动创建该目录:

mkdir /data1/mysql/log
chown -R mysql /data1/mysql/log
chgrp -R mysql /data1/mysql/log

 

10:启动mysql服务

在centOS7中,直接用systemctl启动即可:

systemctl start mysql

 

11:更改root用户密码并分配远程访问权限

由于之前在start中取消了权限验证,所以现在可以不输入密码直接连上数据库,这里我们先更改root用户密码,并分配远程访问权限,成功后将去除start启动指令中的取消权限验证参数。

mysql -u root mysql

无需验证直接连接mysql,成功后出现mysql>提示符:

mysql> use mysql
mysql> update user set authentication_string=password(123456) where user=root;
mysql> flush privileges;
mysql> grant all on *.* to [email protected]% identified by 123456;

第一行切换当前数据库;

第二行修改root账户密码,这里的“authentication_string”是较新的版本,老版本的密码字段是"password";

第三行刷新权限;

第四行分配远程访问权限给root用户,这里的密码是“123456”。

 

接下来修改/etc/rc.d/init.d/mysqld文件,去除脚本中start部分的"--skip-grant-tables"参数,并重启mysql服务,取消匿名登录

  start)
    # Start daemon

    # Safeguard (relative paths, core dumps..)
    cd $basedir

    echo $echo_n "Starting MySQL"
    if test -x $bindir/mysqld_safe
    then
      # Give extra arguments to mysqld with the my.cnf file. This script
      # may be overwritten at next upgrade.
      $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path" $other_args>/dev/null 2>&1 &
      wait_for_pid created "$!" "$mysqld_pid_file_path"; return_value=$?

      # Make lock for RedHat / SuSE
      if test -w "$lockdir"
      then
        touch "$lock_file_path"
      fi

      exit $return_value
    else
      log_failure_msg "Couldn‘t find MySQL server ($bindir/mysqld_safe)"
    fi
    ;;

注意 mysqld_safe 启动指令后的 --skip-grant-tables 参数已经删除。

刷新服务文件并重启mysql服务:

systemctl daemon-reload
systemctl restart mysql

 

完成mysql的安装,并且已经可以通过root用户用指定的密码‘123456‘进行远程访问。

注:如果开启了防火墙,则可通过开启3306端口,或开启mysql服务的方式来配置firewalld:

firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-service=mysql --permanent
firewall-cmd --reload

 

 

MySQL主从复制配置:


 明天来写...

以上是关于CentOS 7.2 安装配置mysql主从服务器的主要内容,如果未能解决你的问题,请参考以下文章

CentOS 7.2下服务器配置(linux+apache+php+mysql)

CentOS 7 MySQL5.7 主从配置-binlog 新服务器从安装mysql到主从配置完成只需要3分钟

CentOS 7.2 安装配置 Percona Server

centos7下配置mysql5.7.24主从复制

centos7安装mysql5.7.24后配置主从

mysql 5.7 centos 7 主从安装配置详解 .md