Linux下centos6.4安装mysql5.7.21

准备工作:

环境:linux

系统:centos6.4-x86-x64

安装工具:mysql-5.7.21-x86-64

软件下载:

mysql版本下载:点击打开链接


或者:mysql-5.7.21二进制包

或者linux下使用wget下载:

wget  -xp https://dev.mysql.com//Downloads/MySQL-5.7/mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz  /mysql

准备工作:

1.安装wget插件:

命令:sudo yum -y install wget

2.Centos6.4更换yum的源为阿里源
1.源所在目录:/etc/yum.repos.d/
备份源文件:
cp -rp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2.下载新的CentOS-Base.repo到/etc/yum.repos.d/
CentOS 6
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
CentOS 7
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
3.yum clean all
4.yum makecache

到此源安装完成

linux安装mysql方式有很多,这里本人安装方式为二进制安装方式,个人喜欢的原因:安装目录根据自己喜好,配置自己配置。

检查操作系统上是否已经安装了mysql数据库
rpm -qa|grep mysql
显示版本:
mysql57-community-release-el7-8.noarch
删除已经存在的版本
rpm -e --nodeps mysql57-community-release-el7-8.noarch
检查删除是否成功
rpm -qa|grep mysql
查看yum上提供的mysql数据库版本

yum list|grep mysql

若你的系统上已经安装了mysql如现有mysql版本是5.6,现在想安装mysql5.7版本则可以进行如下操作:

#检查mysql

find / -name mysql 

#删除已经安装的mysql

find / -name "*mysql*" | xargs rm -rf

注意:卸载后/etc/my.cnf不会删除,需要进行手工删除

rm -rf /etc/my.cnf

将下载的安装包"mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz"利用xftp上传至/opt目录下,然后解压,重新命名,移动mysql目录下

tar -zxvf mysql-5.7.21-linux-glibc2.12-x86_64.tar.gz
mv mysql-5.7.21-linux-glibc2.12-x86_64 mysql-5.7.21
mkdir mysql
mv /opt/mysql-5.7.21 /opt/mysql

以下截图为我本地mysql5.7.21目录(/opt/mysql/mysq-5.7.21)

在上图该目录下创建data目录,用于数据库存放

cd /opt/mysql/mysql-5.7.21
#创建data目录,数据库存放目录
mkdir data
ls -l

如下截图:


创建mysql用户组和mysql用户

#查看有没有mysql组
cat /etc/group | grep mysql
查看有没有mysql用户
cat /etc/passwd |grep mysql
若没有则创建mysql组
#创建mysql用户组
groupadd mysql
#创建mysql用户并添加到mysql用户组中(//useradd -r参数表示mysql用户是系统用户,不可用于登录系统;第一个mysql是用户组,第二个mysql是用户) 
useradd -r -g mysql mysql
#检查用户组是否创建成功
groups mysql

设置mysql目录访问权限,用户组

#将mysql目录访问权限赋为myql用户
chown -R mysql /opt/mysql/mysql-5.7.21/
#改变mysql目录的用户组属于mysql组
chgrp -R mysql /opt/mysql/mysql-5.7.21/
#查看mysql目录下所有的目录及文件夹所属组合用户
cd /opt/mysql/mysql-5.7.21
ls -l

效果如下截图:会发现这里的用户,用户组均发生了改变,均由root变成mysql用户,用户组


创建以下文件,设置访问权限,用于mysql配置中

创建文件/tmp/mysql.sock
赋值权限:
chown -R mysql:mysql /tmp/mysql.sock
chmod 755 /opt/mysql-5.7.21/tmp/mysql.sock
创建文件:/opt/mall/mysql/log/mysqld.log
赋值权限:
chown -R mysql:mysql /opt/mall/mysql/log/mysqld.log
chmod 755 /opt/mall/mysql/log/mysqld.log
创建文件:/opt/mall/mysql/run/mysqld.pid
赋值权限:
chown -R mysql:mysql /opt/mall/mysql/run/mysqld.pid
chmod 755 /opt/mall/mysql/run/mysqld.pid

备注:
chmod:用于改变文件或目录的访问权限,一般用来用户用它控制文件或目录的访问权限
chmod 755 /tmp/mysql.sock 
chown:将某个目录下文件及目录修改为某个用户组
chgrp:将某个目录下文件及目录修改为某个组
-R处理指定目录以及其子目录下的所有文件
chown -R mysql .把当前目录下文件及目录的属主改为mysql用户
chgrp -R mysql .把当前目录下文件及目录所属组改为mysql组

安装和初始化数据库

cd /opt/mysql/mysql-5.7.21
bin/mysqld --initialize --user=mysql --basedir=/opt/mysql/mysql-5.7.21 --datadir=/opt/mysql/mysql-5.7.21/data

执行后报:


错误信息:
error while loading shared libraries: libnuma.so.1: cannot open shared object file: No such file or directory
解决方法:
原因:
yum安装的是libnuma.so.1,但安装时默认安装的是32的,而db2需要的是64位的
1.如果已经安装了libnuma.so.1,先yum remove libnuma.so.1

2.安装依赖包 yum -y install numactl.x86_64


备注:
SLES 11:从MySQL 5.7.19开始,Linux通用tar包的格式是EL6而不是EL5,以致于MySQL客户端bin/mysql需要libtinfo.so.5

安装好依赖包后继续执行得到如下截图。注意最后一行,是mysql初始密码


配置SSL参数

cd /opt/mysql/mysql-5.7.21
bin/mysql_ssl_rsa_setup --datadir=/opt/mysql/mysql-5.7.21/data

由于mysql-5.7.21版本my.cnf不在/support-files下,故我们创建my.cnf文件,复制如下内容:

touch /etc/my.cnf
vim /etc/my.cnf

[mysqld]
character_set_server=utf8
init_connect='SET NAMES utf8'
basedir=/opt/mysql/mysql-5.7.21
datadir=/opt/mysql/mysql-5.7.21/data
port = 3306
socket=/tmp/mysql.sock
log-error=/opt/mall/mysql/log/mysqld.log
pid-file=/opt/mall/mysql/run/mysqld.pid 
#表名不区分大小写
lower_case_table_names = 1
max_connections=5000
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

注意:

这里面配置sql_mode模式为:

sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

这样做的原因:由于mysql版本升级,MySQL 5.6以后timestamp设定默认值规则改变,不能为”0000 00-00 00:00:00”故sql_mode不能设置为这样:

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

若是sql_mode是这样的形式则使用mysql客户端将一个数据库复制到另一个数据库会报如下错误:



启动mysql(命令行方式)

cd /opt/mysql/mysql-5.7.21
bin/mysqld_safe --user=mysql &

配置mysql自动启动(可根据需要配置)

cd /opt/mysql/mysql-5.7.21
cp support-files/mysql.server /etc/init.d/mysql
因为mysql是安装在/opt/mysql/mysql-5.7.21下故需要修改/etc/init.d/mysql文件的mysql安装路径
vim /etc/init.d/mysql
basedir=/opt/mysql/mysql-5.7.21
datadir=/opt/mysql/5.7.21/data
#增加mysql服务控制脚本执行权限
chmod +x /etc/init.d/mysql 
#通过chkconfig命令将mysqld服务加入到自启动服务中
chkconfig --add mysql
#开启自启动服务
chkconfig mysql on
#查看是否添加成功
chkconfig --list mysql



若配置了mysql自启动方式则可以使用服务方式启动mysql

#查看mysql状态
/etc/init.d/mysql status 或者 service mysql status
#启动mysql
/etc/init.d/mysql start 或者 service mysql start
#停止mysql
/etc/init.d/mysql stop 或者 service mysql stop
#重新启动mysql
/etc/init.d/mysql restart 或者 service mysql restart
查看mysql服务说明启动成功
ps -ef|grep mysql


配置mysql环境变量( 在文件的末尾添加,注意必须配置mysql环境变量否则mysql客户端工具连接不了):
vim /etc/profile
export PATH=/opt/mysql/mysql-5.7.21/bin:$PATH
或者 
echo "export PATH=$PATH:/opt/mysql/mysql-5.7.21/bin" >> /etc/profile


设置环境变量立即生效(若该句不执行则重新启动服务器后配置的mysql环境变量失效)

source /etc/profile
把mysql客户端放到默认路径:

ln -s /opt/mysql/mysql-5.7.21/bin/mysql /usr/local/bin/mysql


注意:建议使用软链过去,不要直接包文件复制,便于系统安装多个版本的mysql
软链接的意思就是给mysql客户端创建快捷方式


修改mysql初始密码
cd /opt/mysql/mysql-5.7.21/bin
./mysql -u root -p
密码上面生成的临时密码 :34=y7&/MsmJe
mysql>set password=password("newpassword");
或者 mysql -u root -p #登录mysql
#查看mysql版本
mysql> select version();
#查看数据库
mysql> show databases;
密码上面生成的临时密码 :34=y7&/MsmJe


设置远程登录 (一定要保证进入mysql状态下)
[root@admin mysql-5.7.21]# mysql -u root  -p
mysql>use mysql;
mysql>update  user  set host='%' where user='root';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypwd' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;  
mysql>exit;
#重新启动mysql
service mysql restart;

测试远程连接是否正常:


这是因为linux防火墙没有关闭或者防火墙开启状态下没有对外开放mysql3306端口号

查看是否开启3306端口号

netstat -an|grep 3306

或者 

netstat -ntpl #查看防火墙对外开放端口情况

解决方法:

方法一:直接关闭防火墙

chkconfig iptables off #重启后永久生效

方法二:开启防火墙的情况下,通过命令方式或者配置文件方式开放防火墙对外端口

#开启防火墙
chkconfig iptables on
#开启3306端口号
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
#保存开启的端口号
service iptables save
#重新启动防火墙
service iptables restart

通过修改配置文件开启端口号

vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
#重新启动防火墙
service iptables restart


备注:若使用第二种方式则首先开启防火墙,然后使用命令方式或者配置文件方式,二选一
不同系统防火墙对外开放端口具体方法参考:防火墙开放端口方法
网络其他参考:网络方法防火墙开放端口


测试远程是否正常连接

windows+R--cmd
mysql -h 192.168.174.128 -u root -p

输入密码




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值