注意:我们安装的是最小版。个人学习啥的完全够用了,但是安装方式是一样的。

今天带来详细的Centos7安装解压版Mysql8,这里尽可能的详细。这样做,自己也会有不错的收获。

---------------------------------更新列表---------------------------------

安装包下载:https://pan.baidu.com/s/1aBY6kIY4YMLDbQc6mgBtUQ(mysql-8.0.19-linux-x86_64-minimal.tar.xz)

提取码:3ba3

2020-02-07更新:mysql8在安装的时候(linux为0,window为1)默认lower_case_table_names=0,也就是说区分大小写。也就是说我们在创建表或者数据库的时候就严格区分大小写的,但是很多场景还是需要不区分大小写的,比如使用mycat的时候。在8之前的处理方式是,找到我们的my.cnf配置文件,然后在[mysqld]下面添加“lower_case_table_names=1”这样的配置,但是在mysql8之中这样配置启动就会报错,因为mysql8在安装的时候初始化就因该指定 “lower_case_table_names=1”。如:./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/data/ --lower-case-table-names=1

以上是网上的说法版本,我去mysql中使用show Variables like '%table_names';查看了我的lower_case_table_names,也确实等于0,为了验证是否在初始化的时候需要指定,我刻意去安装了一下,输入上面的初始化命令,发现一切正常,但是在启动mysql的时候报错了,报错的内容跟直接在my.cnf中修改是一样的错误。所以得出结论,启动初始化的时候指定大小写是错误的,当然也不排除我写错了初始化命令。希望知道原因的大佬指出。

 

----------------------------------分割线---------------------------------

1.解压版安装

1.0.1:下载Mysq Minimal 版本:请点击我

如图:

centos7能解压RAR吗 centos7怎么解压_centos7能解压RAR吗

下载好了之后会有一个 mysql-8.0.19-linux-x86_64-minimal.tar.xz 文件

1.0.2:将下载好的 mysql-8.0.19-linux-x86_64-minimal.tar.xz 压缩文件上传到自己服务器的 /usr/local/ 文件夹下面

1.0.3:检查服务器是否已经安装mysql或者mariadb,有可能服务器自带了mysql或者mariadb服务器,但是后来mysql收费了,很有可能会自带mariadb服务器。

检查是否存在mysql或者mariadb
rpm -qa | grep mysql
rpm -qa | grep mariadb
如果存在,则卸载
rpm -e -nodeps mysql mariadb

删除了包之后,查看是否有残余的文件夹
find / -name mysql 
find / -name mariadb
如果存在,则删除
rm -rf xxxx xxx xxx
(xxx是文件地址,可以输入多个,直接从find / -name mysql 搜索出来的复制粘贴即可)

1.0.4:解压压缩文件

注意:J是大写
tar -xvJf mysql-8.0.19-linux-x86_64-minimal.tar.xz

1.0.5:删除我们压缩包,且把解压之后的文件改名为mysql

删除掉压缩包
rm -rf mysql-8.0.19-linux-x86_64-minimal.tar.xz 

改名为mysql 这样我们的mysql完整地址为:/usr/local/mysql
mv mysql-8.0.19-linux-x86_64-minimal/ mysql

1.0.6:创建一个文件夹,保存我们的数据文件等信息

-p检查是否存在,不存在则创建,如果不指定,创建多级文件夹会报错
mkdir -p  /data/mysql/data

1.0.7:检查是否存在mysql用户和mysql组

查看组
cat /etc/group | grep mysql
查看用户
cat /etc/passwd | grep mysql
用户和组信息等都存在/etc文件夹下面,如果我们的用户和组都不存在,则创建组和用户
1.创建组
groupadd mysql
2.创建mysql用户
useradd -s /sbin/nologin -r -g mysql mysql 
-s:指定用户登入后所使用的shell。
-r:系统级用户
-g:所属分组为mysql

我们在这里创建了一个mysql组和mysql用户,用户是系统级别的,所属mysql分组。且有shell

如果想详细了解mysql的用户和组等信息请点击我:Linux用户和组的概念

1.0.8:然后把我们的数据文件,和mysql的解压文件分别指定权限给mysql组和角色

给mysql组
chgrp -R mysql mysql/
给mysql用户
chown -R mysql mysql/
注意,当前是在/data/文件夹下面,意思就是说我们把mysql文件夹及其下属文件夹权限都给了mysql组和mysql角色

1.0.9:当我们的权限等都分配好了,就可以初始化mysql了,首先我们进入到我们的mysql目录,即:/usr/local/mysql

初始化mysql:注意是mysqld,不是mysql,basedir为我们的mysql解压文件夹,datadir为我们创建的保存数据的文件夹,也就是第6步创建的文件夹(注意,初始化只需要执行一次。再次执行则会报错)
./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/data/

如下图:

centos7能解压RAR吗 centos7怎么解压_centos7_02

注意,root@localhost后面的就是初始密码,我这里的是::DNm(Jl69j-N

如果看到的页面不是这样那就表示出错了。另外如果初始密码忘记了,怎么办,我们只需要把我们初始化的data文件中的内容删除,重新进行初始化即可,如:

删除掉我们data文件夹中的内容(表示删除所有
rm -rf /data/mysql/data/*
然后再次执行初始化:
./usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/data/mysql/data

1.1.0:在etc下面创建我们的配置文件和运行参数文件

配置文件
touch /etc/my.cnf
运行参数文件
mkdir /etc/my.cnf.d

1.1.1:编辑我们的mysql配置文件my.cnf

vi /etc/my.cnf

输入以下内容:
-------------------分割线-----------------
[mysqld]

# 设置mysql的安装目录
basedir=/usr/local/mysql 
# 设置mysql的数据文件
datadir=/data/mysql/data
# 套接字保存地址 当服务器启动的时候自动创建的
socket=/data/mysql/mysql.sock

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
# 启动异常日志文件
log-error=/data/log/mysql-log/error.log
# 程序启动的pid文件
pid-file=/data/mysql/mysql.pid

#
# include all files from the config directory
# 
!includedir /etc/my.cnf.d
-------------------分割线-----------------

按下esc后输入:wq 即可

1.1.2:到这个时候我们就可以启动一下服务,试试看了

首先去到/usr/local目录下,因为这样直接输入mysql之后就可以又提示了
启动mysql服务
mysql/support-files/mysql.server start

centos7能解压RAR吗 centos7怎么解压_centos7安装mysql8_03

对的,报错了,还记得我们在my.cnf中指定了异常日志文件 /data/log/mysql-log/error.log,但是我们系统还没有这个文件的,所以我们需要创建该文件,并且赋予权限为mysql角色。

13.创建日志文件,并赋权限mysql。

创建文件
mkdir -p /data/log/mysql-log
touch /data/log/mysql-log/error.log
渠道data目录下,赋予权限
chown -R mysql log/
chgrp -R mysql log/

现在我们有了日志文件,我们再次执行/usr/local/mysql/support-files/mysql.server start启动mysql服务。

结果如下图:

centos7能解压RAR吗 centos7怎么解压_linux安装解压版mysql8_04

可以看到,我们的mysql已经启动成功了。到这里我们的mysql安装就完成了。

但是如果想做到service mysqld start 还是不行,想达到该效果我们还需要将mysql添加到系统服务

2.将mysql添加到系统服务

2.0.1:编辑我们刚的启动文件,mysql.server,添加我们的安装地址和文件地址

注:当前在/目录下
vi /usr/local/mysql/support-files/mysql.server

找到如下内容并且修改:
basedir=
datadir=

centos7能解压RAR吗 centos7怎么解压_centos7_05

注意:这里的basedir和datadir就是我们的安装地址和创建的文件保存地址。

2.0.2:复制启动文件到etc/init.d文件下,并赋予权限

注:复制启动文件过去
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 755 /etc/init.d/mysqld
注:755权限的意思大致为:所属角色可读可写可执行,同组其他成员以及其他用户组可读可执行。

2.0.3:添加到系统服务,并设置为打开状态

chkconfig --add mysqld
chkconfig mysqld on

ok到了这里,那么我们的mysql就添加到系统服务中了,就可以使用service mysqld start 进行启动了。

centos7能解压RAR吗 centos7怎么解压_centos7能解压RAR吗_06

虽然添加到了系统服务,也安装成功了,但是还是不可以使用,我们还需要设置一下自己的密码,以及允许外界访问等,接下来我们慢慢的一步步实现。

3.MySql服务设置

3.0.1:设置自己的密码,MySql密码策略必须大小写加上特舒符等,简单的123456就不行。

首先使用我们安装的时候的初始密码,进行登录mysql,然后进行修改密码。

centos7能解压RAR吗 centos7怎么解压_mysql8_07

我们去到了mysql安装目录 使用使用 ./bin/mysql -u root -p 进行登录,输入密码之后发现报错了。其实错误很简单,我们在my.cnf中写的stock文件地址为:/data/mysql/mysql.stock 当mysql服务启动之后那么mysql.stock文件就会创建在 /data/mysql/目录下面,但是我们客户端连接需要的文件夹地址为 /data/mysql/data/mysql.stock(注意 这里你们的文件地址不一定就是这个),所以会报错。

解决办法:

1:修改my.cnf中的地址,改为 /data/mysql/data/mysql.stock

2:创建软连接

我们这里使用第二种,创建软连接

#注意 后面的地址是你们启动使用密码连接报错的地址 不一定就是这个地址
ln -s /data/mysql/mysql.sock /data/mysql/data/mysql.sock

ok,现在重新输入./bin/mysql -u root -p 以及自己的初始密码之后就可以登录了。

然后开始正式修改密码。

注:新密码必须要大小写加上数字特殊符 这里的是MyNewPass4!
注:到这这里,我们可以使用 quit 退出mysql 然后继续使用./bin/mysql -u root -p进行登录验证密码是否修改成功
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

3.0.2:允许除本本机外的客户端访问。并且修改密码策略,是navicat可以访问。

mysql -u root -p
use mysql;
update user set host='%' where user='root';
----------分隔符----------
注:不要修改密码格式支持navicat,因为会导致登陆不上,可以直接使用navicat进行远程连接,无需修改,
有可能是我navicat版本比较高,支持了,如果修改了该属性会导致我们在服务器端使用./mysql -uroot -p 
然后输入密码报错,这个时候我们只能在my.conf中添加skip-grant-tables,直接进入到mysql然后将我们修改的数据修改回去,刷新后退出,把my.cnf配置文件的skip-grant-tables注释掉,然后再次./mysql -uroot -p 登录即可登录成功。另外其他版本的朋友可以试看看,我也不知道是不是版本的原因。
update user set plugin='mysql_native_password' where user='root';
----------分隔符----------
FLUSH PRIVILEGES;
注:这样修改了 就可以在除了本机之外的所有客户端都可以访问。另外:FLUSH PRIVILEGES 非常重要。如果不写,可能不会生效。
那么现在就可以去退出mysql并且重启。使用其他客户端的navicat连接访问了。

最后可以把MySql设置为开机自动启动。

4.忘记密码处理

4.0.1:在my.cnf配置文件添加skip-grant-tables,跳过验证直接进入mysql

centos7能解压RAR吗 centos7怎么解压_centos7安装mysql8_08

4.0.2:修改密码,并且刷新权限,退出后注释掉配置文件的 skip-grant-tables

好了。到这里就基本上mysql的安装就彻底完成了。谢谢大家的支持。

2021-02-05

关于mysql使用navicat远程连接的时候,要么是拒绝访问,要么就是密码策略不一样拒绝访问。

至于为什么会这样我这里就不过多解释了。就是因为密码策略发生了改变。那么解决办法很简单,修改我们mysql用户的密码策略就是了。

这里我们不推荐直接使用root账户进行修改,我们可以使用root角色创建一个用户,然后给该用户赋所有权限。最后给我们的用户密码策略修改成navicat可以连接的即可。

1:创建用户

# 首先使用root进行连接mysql,然后创建用户 test 且该用户是允许所有主机访问(%)

use mysql;

create user 'test'@'%' identified by '‘密码';

2:赋值权限

# 对 test 进行权限赋值,允许所有表的所有操作

grant all privileges on *.* to 'test'@'%' with grant option;

3:修改该用户的密码策略。

# 将test用户的密码策略修改为 mysql_native_password 注意 这里的 %(允许所有主机访问)

ALTER USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';

# 刷新用户信息

FLUSH PRIVILEGES;

3:远程使用navicat进行连接新用户