文章目录

  • 一、官网下载mysql压缩版
  • 二、文件上传到centos7
  • 三、卸载/删除CentOS7里面的Maridb数据库和Mysql
  • 四、安装mysql5.7
  • 1>解压
  • 2>创建mysql组和用户
  • 3>创建相关文件&授权文件&初始化
  • 4>创建/修改mysql配置文件
  • 5>初始化mysql
  • 6>mysql环境变量(本人认为没什么用,可以先跳过试试)&自启动配置
  • 7>启动服务
  • 五、修改密码&释放权限(mysql报错?设置软连接)
  • 1>解决找不到连接错误
  • 2>修改登陆数据库密码。
  • 六、修改防火墙设置、Navicat连接服务器数据库
  • 1>设置centos7的开放端口
  • 2>禁用防火墙(不建议这么用)
  • 3>Navicat连接服务器mysql
  • 参考链接


终于解决了!在虚拟机上面安装了N次mysql5.7数据库,踩了无数的坑。有时候是安装过程出错,有时候是初始化出错,总之就是各种各样的错误。mysql服务安装成功了命令又不管用,作为小白的我很头疼啊!在网上查找了很多资料总是做完之后mysql服务还是不能用。肿么办?终于,在我东拼西凑之下mysql服务成功启动,mysql命令也成功进入mysql窗口,防火墙也设置OK,windows系统下的Navicat也成功连接到了CentOS7下的mysql服务。
我太难了!!!

一、官网下载mysql压缩版

mysql官网下载linux安装的mysql

window 防火墙 MySQL mysql防火墙设置_linux


我这里安装的是mysql5.7.17,与上述截图版本不一致,上面仅供演示参考,但是安装步骤一致。

二、文件上传到centos7

①把在windows系统下下载好的mysql-xxx.tar.gz压缩包使用Xshell或者是其他连接工具,上传到服务器。

②有网络条件的可以使用wget命令直接下载到centos7。

wget后面url的选择

一般在使用别人的的路径的时候下载的版本都是不可选择的,那么怎么才能选择自己想要的下载版本呢?选择DownLoad后 进入这个页面:

window 防火墙 MySQL mysql防火墙设置_linux_02


在centos7命令行输入:

#虚拟机上下载mysql-xxx.tar.gz
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz

如果wget不存在?命令行,先执行:

yum -y install wget  #安装wget

然后在执行一遍下载命令。

三、卸载/删除CentOS7里面的Maridb数据库和Mysql

在rpm中利用grep工具搜索有关mariadb的软件包

rpm -qa | grep mariadb

rpm是RedHat软件包管理工具
-qa 表示 query all 
| 表示 将两个命令隔开,左边命令的输出就会作为右边命令的输入
grep 是一个文本搜索工具

如果有,删除搜索出来的软件包名

rpm -e 搜索出来的软件包名
rpm -e --nodeps 强制删除

window 防火墙 MySQL mysql防火墙设置_数据库_03


再使用命令 rpm -qa | grep mariadb 进行检查确认一遍是否完全删除。

卸载删除mysql数据库

这一步很重要,以免后面安装有残留的文件有影响。由于我之前安装了N次,所以我要找到所有的mysql相关的文件删除它。
查找安装的mysql:

rpm -qa | grep mysql  #查找安装的mysql文件
yum remove mysql-*  #卸载所有的mysql文件

window 防火墙 MySQL mysql防火墙设置_linux_04


查找mysql相关的文件:

find / -name mysql    #查找根目录下/,名字包含mysql的所有文件
rm -rf 搜索出来的文件名(例如 rm -rf  /usr/local/mysql)  #删除文件

window 防火墙 MySQL mysql防火墙设置_mysql_05

删!删!删!全部删除!!!

四、安装mysql5.7

我的安装路径是 /usr/local/mysql (所有的文件全部在mysql下面)

友情提示:

如果不安装在这个路径下的话可能会出现错误,看,

window 防火墙 MySQL mysql防火墙设置_window 防火墙 MySQL_06


虽然在配置文件里面配置了basedir,但是启动的时候还是会去到/usr/local/mysql/bin/下面去寻找mysqld,这时候就需要安全启动:

./bin/mysqld_safe --basedir=/mysql/mysql-5.7.17/,这是我之前配置的安装路径。mysqld_safe具体的使用方法还请自行百度。

1>解压

回到第一步:把mysql-xxx.tar.gz上传到服务器:/usr/local/ 下。
①如果你是用的是Xshell,可以新建文件传输,然后把文件拖拽到指定的位置。
②也可以直接进入到 /usr/local/ 目录下,把文件拖拽到XShell里面,上传。
在这种情况下有可能会报错:rz命令找不到。这时可以在命令行执行:

yum install lrzsz

文件上传完成后执行命令:

window 防火墙 MySQL mysql防火墙设置_linux_07


解压文件到当前目录:/usr/local/

window 防火墙 MySQL mysql防火墙设置_mysql_08


解压出来的文件重命名:

window 防火墙 MySQL mysql防火墙设置_window 防火墙 MySQL_09

2>创建mysql组和用户

首先检查mysql是否进行分组:

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

查询之后存在分组???

window 防火墙 MySQL mysql防火墙设置_linux_10


如果之前创建过分组怎么办?删掉分组,万一出问题怎么办?(小心别掉坑里去)

window 防火墙 MySQL mysql防火墙设置_数据库_11


用户分组不能删除、报错怎么办?

window 防火墙 MySQL mysql防火墙设置_数据库_12


这是mysql的进程被占用的原因,可以杀进程或者是重启一次反正也用不了多长时间[龇牙]

创建分组

groupadd mysql  #创建组
 useradd -r -g mysql mysql  #添加组用户

window 防火墙 MySQL mysql防火墙设置_mysql_13


对用户进行mysql文件的授权:

chown -R mysql:mysql  /usr/local/mysql

window 防火墙 MySQL mysql防火墙设置_window 防火墙 MySQL_14

3>创建相关文件&授权文件&初始化

创建data文件夹:

mkdir /usr/local/mysql/data  #data文件夹里存放的是数据库数据

data文件夹授权:进入mysql目录下

cd /usr/local/mysql/
chown -R mysql:mysql data  #授权data文件夹

window 防火墙 MySQL mysql防火墙设置_centos_15


对mysql赋予最高权限,所有用户可用

cd ..  #返回上一级
chown 777 mysql/ 赋予最高权限(所有用户都可以使用)

window 防火墙 MySQL mysql防火墙设置_window 防火墙 MySQL_16

4>创建/修改mysql配置文件
vi /etc/my.cnf

配置信息如下:

[mysql]
#修改默认字符集
default-character-set=utf8
#这个是绑定客户端socket文件路径,不然出错还要创建
socket=/usr/local/mysql/mysql.sockt
[mysqld]
#用于后续修改密码时,如果随机密码不对,可以跳过密码验证登录的,修改完密码后再删掉。skip-grant-tables
socket=/usr/local/mysql/mysql.sockt
log_error=/usr/local/mysql/data/error.log
pid_file=/usr/local/mysql/data/mysql.pid
basedir=/usr/local/mysql/
datadir=/usr/local/mysql/data
port = 3306
#忽略大小写
lower_case_table_names=1
#服务端默认字符集
character-set-server=utf8
#最大连接数
max_connections=2000
#创建数据库时默认数据引擎
default-storage-engine=INNODB
explicit_defaults_for_timestamp=true

window 防火墙 MySQL mysql防火墙设置_linux_17


授权my.cnf权限

chown 777 /etc/my.cnf

检查是否有libaio库?

rpm -qa|grep libaio

没有则安装

yum install libaio
5>初始化mysql

进入mysql的bin目录下

cd /usr/local/mysql/bin
#初始化数据库
./mysqld --initialize  --user=mysql  --basedir=/usr/local/mysql  --datadir=/usr/local/mysql/data

window 防火墙 MySQL mysql防火墙设置_centos_18

6>mysql环境变量(本人认为没什么用,可以先跳过试试)&自启动配置
vi /etc/profile   #环境变量配置文件
export PATH=$PATH:/usr/database/mysql/bin  #文件最后面加上
source /etc/profile  #配置文件生效

自启动配置

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
chkconfig --add mysqld
chkconfig --list 
显示服务列表,如果看到mysqld的服务,并且3,4,5都是”on/开启 “的话则成功
如果是off/关闭,则键入:chkconfig --level 345 mysqld on 命令

window 防火墙 MySQL mysql防火墙设置_linux_19

7>启动服务
启动&关闭&重启mysql服务的命令
service mysqld start   #启动
service mysqld stop   #停止
service mysqld restart   #重启

启动服务报错?

window 防火墙 MySQL mysql防火墙设置_数据库_20


错误原因,没有初始化权限表。

进入mysql目录下:

cd /usr/local/mysql
chown -R mysql.mysql .  #初始化当前目录的权限

再次启动服务OK

window 防火墙 MySQL mysql防火墙设置_mysql_21


查看一哈进程

ps -ef | grep mysql

window 防火墙 MySQL mysql防火墙设置_mysql_22

五、修改密码&释放权限(mysql报错?设置软连接)

由于前面配置文件配置了跳过检测密码,命令行直接输入mysql

1>解决找不到连接错误
mysql   #未找到命令错误

window 防火墙 MySQL mysql防火墙设置_window 防火墙 MySQL_23


因为linux系统的命令是去/usr/bin目录下去寻找,找不到mysql当然会报错。这时,就需要设置一下软连接到/usr/bin下面:

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

window 防火墙 MySQL mysql防火墙设置_window 防火墙 MySQL_24


再次在命令行输入mysql:

window 防火墙 MySQL mysql防火墙设置_linux_25


OK进去了!

2>修改登陆数据库密码。
UPDATE mysql.user SET authentication_string=PASSWORD('新密码') where USER='root';
flush privileges;  #刷新授权

重置密码后一定要执行:

ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
flush privileges;

设置任何ip都可以登录:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION; 
flush privileges;

退出mysql:

quit;

window 防火墙 MySQL mysql防火墙设置_centos_26


密码修改之后再次进入配置文件:

vi /etc/my.cnf

注释掉,跳过密码检测的配置。重启mysql服务:

service mysqld restart

再次进入mysql需要输入修改之后的密码:

window 防火墙 MySQL mysql防火墙设置_centos_27

六、修改防火墙设置、Navicat连接服务器数据库

1>设置centos7的开放端口

查看防火墙开放的端口:

firewall-cmd --list-ports

没有开放的端口

window 防火墙 MySQL mysql防火墙设置_mysql_28


如果没有3306端口,是连接不上的,输入下面命令,使防火墙开放 3306端口(使用TCP协议的/永久开放的/公开的性质)

#开放3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent

参数

描述

–add-port=3306/tcp

添加端口,格式为:端口/通讯协议

–remove-port=3306/tcp

移除端口,格式为:端口/通讯协议

–zone

作用域

–permanent

永久生效,没有此参数重启后失效

同样的方法,也可以用它来开放8080端口。
端口开放后怎么关闭开放端口呢?把add改成remove就OK了。

重启防火墙

firewall-cmd --reload

window 防火墙 MySQL mysql防火墙设置_window 防火墙 MySQL_29

2>禁用防火墙(不建议这么用)
systemctl stop firewalld.service   #暂时停用防火墙
systemctl disable firewalld.service  #永久关闭防火墙,不建议使用

同样的道理,有停用就有开启;有禁用就有启用:

systemctl startfirewalld.service   #暂时停用防火墙
systemctl enable firewalld.service  #永久关闭防火墙,不建议使用
3>Navicat连接服务器mysql

window 防火墙 MySQL mysql防火墙设置_linux_30


连接测试:

window 防火墙 MySQL mysql防火墙设置_数据库_31

如果不做以上防火墙的设置,连接mysql会报错误:UnKnown Error。