MySql(零):Linux(CentOS7)下安装和配置MySQL5.7.20(安装包安装)

一、下载安装包

1.在官网下载MysqL5.7安装包

MysqL-5.7.20-linux-glibc2.12-x86_64.tar.gz。

下载地址:https://dev.MysqL.com/downloads/MysqL/

由于安装包比较大,五六百M吧,再加上官网下载速度很慢,如果你等不急,可以使用下面第二种方法下载。

2.百度网盘资源

链接:https://pan.baidu.com/s/1w98R36MzVwJCiZyeLEFe9A
提取码:8wro

如果该链接失效,可以留言或站内信提醒我更新链接

 

二、创建MysqL用户组和MysqL用户

添加 MysqL 组和 MysqL 用户

      添加 MysqL 组:[root@localhost ~]# groupadd MysqL

      添加 MysqL 用户:[root@localhost ~]# useradd -r -g MysqL MysqL

      扩展:

        查看是否存在 MysqL 组:[root@localhost ~]# more /etc/roup | grep MysqL

        查看 msyql 属于哪个组:[root@localhost ~]# groups MysqL

        查看当前活跃的用户列表:[root@localhost ~]# w

三、将MysqL安装包上传并解压

我一般都是上传/usr/local/目录,然后解压

# tar -xzvf MysqL-5.7.22-linux-glibc2.12-x86_64.tar.gz

四、安装MysqL前的一些准备

由于解压后的MysqL文件夹太长,需要重命名下为MysqL

[root@localhost local]# mv ./MysqL-5.7.21-linux-glibc2.12-x86_64 ./MysqL

修改权限

[root@localhost local]# chown -R MysqL . //文件改为MysqL用户可操作
[root@localhost local]# chgrp -R MysqL . // 属组改为MysqL

检查是否安装了 libaio

[root@localhost pub]# rpm -qa | grep libaio

若没有则安装

  版本检查:

[root@localhost pub]# yum search libaio

  安装:

[root@localhost pub]# yum -y install libaio

五、安装MysqL

进入安装 MysqL 软件目录:

[root@localhost ~]# cd /usr/local/MysqL/

安装配置文件

[root@localhost MysqL]# cp ./support-files/my-default.cnf /etc/my.cnf(提示是否覆盖,输入“ y ”同意)

修改被覆盖后的 my.cnf:

[root@localhost MysqL]# vim /etc/my.cnf
[MysqL] 
# 设置MysqL客户端认字符集 
default-character-set=utf8  
[MysqLd] 
#skip-name-resolve 
#设置3306端口 
port = 3306  
socket=/var/lib/MysqL/MysqL.sock 
# 设置MysqL的安装目录 
basedir=/usr/local/MysqL 
# 设置MysqL数据库的数据的存放目录 
datadir=/usr/local/MysqL/data 
# 允许最大连接数 
max_connections=200 
# 服务端使用的字符集认为8比特编码的latin1字符集 
character-set-server=utf8 
# 创建新表时将使用的认存储引擎 
default-storage-engine=INNODB 
#lower_case_table_name=1 
max_allowed_packet=16M

这边有的版本需要解决这个问题:MySQL的my.cnf文件(解决5.7.18下没有my-default.cnf)

MysqL目录下创建data目录,作为数据存储位置

[root@localhost local]# cd ./MysqL/
[root@localhost MysqL]# ls
bin  copYING  docs  include  lib  man  README  share  support-files
[root@localhost MysqL]# mkdir ./data/

修改当前目录拥有者为 MysqL 用户

[root@localhost MysqL]# chown -R MysqL:MysqL ./

初始化MysqLd,为了清晰,我这边都是用的绝对路径,出现下面这些信息,就代表MysqL配置成功了

[root@localhost bin]# /usr/local/MysqL/bin/MysqLd --initialize --user=MysqL --basedir=/usr/local/MysqL/ --datadir=/usr/local/MysqL/data/
2018-12-23T03:26:53.084331Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2018-12-23T03:26:53.361136Z 0 [Warning] InnoDB: New log files created, LSN=45790
2018-12-23T03:26:53.447653Z 0 [Warning] InnoDB: Creating foreign key constraint system tables.
2018-12-23T03:26:53.549908Z 0 [Warning] No existing UUID has been found, so we assume that this is the first time that this server has been started. Generating a new UUID: 97d6a462-0662-11e9-8f84-000c2928b075.
2018-12-23T03:26:53.551132Z 0 [Warning] Gtid table is not ready to be used. Table 'MysqL.gtid_executed' cannot be opened.
2018-12-23T03:26:53.552764Z 1 [Note] A temporary password is generated for root@localhost: ClTbfl(<=4Qd

最重要的是最后一行,框框里的这个就是MysqL里root的初始密码了

六、配置MysqL

1 设置开机启动 

a. 复制启动脚本到资源目录

[root@localhost MysqL]# cp ./support-files/MysqL.server /etc/rc.d/init.d/MysqLd

b. 增加 MysqLd 服务控制脚本执行权限

[root@localhost MysqL]# chmod +x /etc/rc.d/init.d/MysqLd

c. 将 MysqLd 服务加入到系统服务

[root@localhost MysqL]# chkconfig --add MysqLd

d. 检查MysqLd服务是否已经生效

[root@localhost MysqL]# chkconfig --list MysqLd

命令输出类似下面的结果

MysqLd 0:off 1:off 2:on 3:on 4:on 5:on 6:off       

表明MysqLd服务已经生效,在2、3、4、5运行级别随系统启动而自动启动,以后可以使用 service 命令控制 MysqL 的启动和停止。

查看启动项

chkconfig --list | grep -i MysqL

删除启动项

chkconfig --del MysqL

e. 启动 MysqLd

[root@localhost MysqL]# service MysqLd start

.2 环境变量配置

    将MysqL的bin目录加入PATH环境变量,编辑 /etc/profile文件

[root@localhost MysqL]# vim /etc/profile
PATH = $PATH:/usr/local/MysqL/bin
export PATH

    执行命令使其生效:

[root@localhost MysqL]# source /etc/profile

    用 export 命令查看PATH值:

[root@localhost MysqL]# echo $PATH

七、登录 MysqL

1 测试登录

登录 MysqL

[root@localhost MysqL]# MysqL -uroot -p(登录密码为初始化的时候显示的临时密码)

初次登录需要设置密码才能进行后续的数据库操作

SET PASSWORD = PASSWORD('123456');(密码设置为了123456)

修改密码为 password

update user set authentication_string=PASSWORD('password') where User='root';

2 防火墙端口设置,便于远程访问

[root@localhost ~]$ firewall-cmd --zone=public --add-port=3306/tcp --permanent

[root@localhost ~]$ firewall-cmd --reload

  开启防火墙MysqL3306端口的外部访问

  CentOS升级到7之后,使用firewalld代替了原来的iptables。下面记录如何使用firewalld开放Linux端口

  --zone : 作用域,网络区域定义了网络连接的可信等级。

    这是一个一对多的关系,这意味着一次连接可以仅仅是一个区域的一部分,而一个区域可以用于很多连接

  --add-port : 添加端口与通信协议,格式为:端口/通讯协议,协议是tcp 或 udp

  --permanent : 永久生效,没有此参数系统重启后端口访问失效

3 使用 sqlyog 远程连接出现不允许连接问题:

    首先使用 dos 窗口 ping 一下 linux,排除网络连通问题,其次使用 sqlyog 连接测试一下。

    解决方法登录 linux MysqL用户管理表新增用户帐号

      MysqL> use msyql 

      MysqL> create user 'user-name'@'ip-address' identified by 'password';(红色标记为需要修改的地方)

    其他方案:

      授权root用户可以进行远程连接,注意替换以下代码中的“password”为 root 用户真正的密码,

      另外请注意如果你的root用户设置的是弱口令,那么非常不建议你这么干!:   

MysqL> grant all privileges on *.* to root@"%" identified by "password" with grant option;
MysqL> flush privileges;

 

 

相关文章

MySQL 死锁 是指两个或多个事务互相等待对方持有的锁,从而导...
在MySQL中,InnoDB引擎通过Next-Key Locking技术来解决幻读问...
在数据库事务管理中,Undo Log 和 Redo Log 是两种关键日志,...
case when概述 sql语句中的case语句与高级语言中的switch语句...
其实很简单,只是为了忘记,做个记录,用的时候方便。 不管是...
1.进入服务,找到mysql服务,在属性里找到mysql的安装路径 2...