首页 > 代码库 > CentOS 7.2 安装配置mysql主从服务器

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.tartar -zvxf mysql-5.7.14-linux-glibc2.5-x86_64.tar.gzmv 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 mysqluseradd -r -g mysql mysql

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

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

 

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

chown -R mysql ./mysqlchgrp -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 --initialize2016-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 instead2016-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=gbkmax_allowed_packet=60MBmax_connections=2000datadir=/data1/mysqlsocket=/data1/mysql/mysql.socksymbolic-links=0sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES[mysql]default-character-set=gbksocket=/data1/mysql/mysql.sock[mysqld_safe]log-error=/var/log/mysqld.logpid-file=/var/run/mysqld/mysqld.pid
View Code

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

 

 

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

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

basedir=/data1/mysqldatadir=/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=http://www.mamicode.com/$?      # 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.cnfcp -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 mysqldchkconfig --level 35 mysql onchkconfig

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

mysqld             0:off    1:off    2:on    3:on    4:on    5:on    6:offnetconsole         0:off    1:off    2:off    3:off    4:off    5:off    6:offnetwork            0:off    1:off    2:on    3:on    4:on    5:on    6:off

 

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

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

mkdir /data1/mysql/logchown -R mysql /data1/mysql/logchgrp -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 mysqlmysql> update user set authentication_string=password(123456) where user=root;mysql> flush privileges;mysql> grant all on *.* to root@% 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=http://www.mamicode.com/$?      # 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-reloadsystemctl restart mysql

 

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

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

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

 

 

MySQL主从复制配置:


 明天来写...

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