Linux安装Mysql(8和5.7)

检查安装环境

在安装之前需要查看服务器上是否已经安装了mysql或者mariadb, 如果需要同时安装mariadbmariadb需要修改端口

rpm -qa |grep mysql     //查询是否有mysql

whereis mysql        //查询是否有mysql相关文件

rpm -qa | grep mariadb     //查询是否有mariadb

如果发现已经安装mysql或者mariadb,需要先卸载原有的应用,

以使用下面命令将其删除   rpm -e --nodeps 文件名

rpm -e --nodeps mariadb      //卸载mariadb

rpm -e --nodeps mysql       //卸载mysql

下载mysql

下载地址: MySQL :: Download MySQL Community Server

选择对应的安装包进行下载,并将安装包放到服务器上

Linux安装Mysql(8和5.7)_第1张图片下载时默认是最新版本的安装包, 如果需要下载其他版本可以点击Archiver 查看其他版本安装包

 我这里下载了mysql8Linux安装Mysql(8和5.7)_第2张图片

选择相应的版本和 操作系统进行下载Linux安装Mysql(8和5.7)_第3张图片

上传安装包后需要解压mysql安装包 (我这里是将安装包解压到 /usr/local 目录下)

tar -zxvf mysql-8.0.31-linux-glibc2.12-i686.tar.xz -C /usr/local/mysql-8.0.31-linux-glibc2.12-i686

因为解压的默认文件名称很长这里选择修改文件夹名称(如果将文件名称改为mysql可以省略一些配置)

cd /usr/local     //进入mysql文件所在目录

mv mysql-8.0.31-linux-glibc2.12-i686 mysql-8    //修改文件名

配置mysql

创建一个属组,添加mysql用户,紧接着修改属组及属组用户和文件夹权限(在mysql上级目录执行,这里是/usr/local目录下)

groupadd mysql          //创建属组

useradd -r -g mysql mysql         //创建用户

chown -R mysql:mysql mysql-8       //修改属组及属组用户(mysql-8为刚刚修改的文件名)
chmod -R 775 mysql-8 //修改文件夹权限(mysql-8为刚刚修改的文件名)

进入mysql安装目录创建data目录存储数据

cd /usr/local/mysql-8 //进入解压的mysql目录下

mkdir data     //创建data文件夹

进入bin目录执行初始化安装(记得更换相应的目录)

我这里更改了数据库lower-case-table-names配置,可以根据需要去留这个配置

(注:在mysql8中这个配置只能在初始化数据库时更改, 安装后在更改很麻烦,直接改配置是不可以的,如果是mysql5.7则没有这个限制)

这是一个全局参数,参数文件里面的命令行模式设置是--lower-case-table-names=1  默认值是0

默认是不打开的,值的类型是Integer,默认值为0,最小值1,最大值2.

0:表名字是存储给定的大小并且是区分大小写的。

1:表名字存储在磁盘是小写的,但是比较的时候不区分大小写。

2:存储的时候是按照给定的大小写存储的,比较的时候是按照小写的方式比较。

注意:这里有两个安装路径,datadir是设置mysql数据库的数据存放目录(刚刚创建的目录),basedir是设置mysql的安装目录 (在 my.cnf 配置文件中有配置)

cd bin     //进入bin目录

//执行下面的命令初始化数据库

./mysqld --initialize-insecure --user=mysql 
--lower-case-table-names=1
--datadir=/usr/local/mysql-8/data
--basedir=/usr/local/mysql-8

安装完成之后,最下方出现临时密码,记事本记录出现的临时密码,因为等会第一次进入需要它来登录mysql

更改mysql.server配置

修改指定的环境变量路径(如果之前mysql文件名改的名字是mysql,那这一步就可以省略了,按默认的就可以了。)

vi /usr/local/mysql-8/support-files/mysql.server   //修改文件

 将下面配置中的目录修改为自己的路径 按 进行修改,改完后按Esc键 输入 :wq 保存文件

 Linux安装Mysql(8和5.7)_第4张图片

 然后拷贝这份启动文件到系统环境下,当然建立软连接也可以,我这里使用软连接的方式

ln -s /usr/local/mysql-8/support-files/mysql.server /etc/init.d/mysql

然后查看连接是否成功

ll /etc/init.d/mysql

再添加bin目录的软连接

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

检查是否创建查成功

ll /usr/local/bin/mysql

修改my.cnf文件

vi /etc/my.cnf

修改其中相关的配置: 按 进行修改,改完后按Esc键 输入 :wq 保存文件

注:  注意修改 安装目录和数据目录

如果安装版本为mysql8 初始化时没有添加lower_case_table_names=1配置则需要删掉或者注释掉这个配置  mysql5.7则不影响

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[mysqld]
# 作用是禁止域名解析:在mysql的授权表中就不能使用主机名了,只能使用IP
skip-name-resolve
# 设置3306端口
port = 3306
#设置远程访问ip
bind-address=0.0.0.0
# 设置mysql的安装目录(修改成自己的目录)
basedir=/usr/local/mysql-8
# 设置mysql数据库的数据的存放目录(修改成自己的目录)
datadir=/usr/local/mysql-8/data
# 允许最大连接数
max_connections=200
# 服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#设置查询操作等不区分大小写,(如果初始化时没有加这个配置则需要去掉或者#注释掉,否则无法启动)
lower_case_table_names=1

设置文件权限

chmod -R 775 /etc/my.cnf

启动mysql

启动相关命令:

service mysql start   //启动mysql服务
service mysql stop    //停止mysql服务
service mysql restart  //重启mysql服务

如果需要可以 设置开机自启

chkconfig --add mysql

查看是否开启

chkconfig --list

首次登录mysql,并把密码修改 使用刚才记录的临时密码登录进去

mysql -uroot -p

修改root账户的密码为123456(自定义)出现Query OK 则证明成功修改

注:  mysql8与mysql5.7修改方式不同(以下写出两个版本的方式)

ALTER USER USER() IDENTIFIED BY '123456';      //mysql8

set password for root@localhost = password('123456')    //mysql5.7

如果没有开放3306端口的话是连不上的   开放3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

开放端口需要重启防火墙

firewall-cmd --reload

配置远程连接用户(可以不配置,使用root用户连接)

CREATE USER '用户名'@'host' IDENTIFIED BY '密码'; 
//mysql8需要先执行上面的命令后执行下面的命令,mysql5.7则不需要

grant all privileges on *.* to '用户名'@'%' identified by '密码'

注意: 其中%是指任意ip,自己自定义一个远程可以访问的账户,账号和密码可以和本地root同名。

查看mysql用户

select host,user,password_expired,password_last_changed,password_lifetime FROM mysql.user

当远程连接出现ERROR 1396 (HY000): Operation ALTER USER failed for ‘root‘@‘%‘错误时

说明MySQL 没有开放远程登录的权限

解决办法 :

1、远程链接服务器,在服务器内mysql系统目录下的/bin文件下执行mysql -u root -p;输入密码登入mysql;

2、在mysql中执行use mysql 命令,进入系统数据库

3、在mysql数据库中执行 select host from user where user = 'root';如果返回结果如下图:

Linux安装Mysql(8和5.7)_第5张图片

该结果表示是由于当前的root用户限制在当前的内网ip内访问的,需要修改他的访问域。

4、在mysql数据库中执行 update user set host = '%' where user = 'root';

5、执行完成后通过命令 service mysql restart 来重启mysql数据库。

ps:(如果上面还未生效,请执行:flush privileges;  这个命令是刷新MySQL的权限相关表)

你可能感兴趣的:(linux,mysql,centos)