mysql8 linux配置文件_Linux安装mysql8.*

本文档详述了在CentOS7环境下安装MySQL8.0的步骤,包括清除原有MySQL和MariaDB、安装MySQL8.0、设置配置文件、启动服务、开启防火墙3306端口、远程访问配置以及解决Navicat连接问题。同时,也介绍了Windows环境下安装MySQL8.0的流程,并提供了Java连接MySQL8.0需要注意的事项。
摘要由CSDN通过智能技术生成

环境

CentOS7 安装mysql8 步骤;

window下的Navicat 连接MySql8;

第一部分 CentOS7安装mysql8

1.1 安装前清理工作;

1.1.1 清理原有的mysql数据库;

使用以下命令查找出安装的mysql软件包和依赖包:

rpm -pa | grep mysql

显示结果如下:

mysql80-community-release-el7-1.noarch

mysql-community-server-8.0.11-1.el7.x86_64

mysql-community-common-8.0.11-1.el7.x86_64

mysql-community-libs-8.0.11-1.el7.x86_64

mysql-community-client-8.0.11-1.el7.x86_64

使用以下命令依次删除上面的程序

yum remove mysql-xxx-xxx-

删除mysql的配置文件,卸载不会自动删除配置文件,首先使用如下命令查找出所用的配置文件;

find / -name mysql

whereis mysql

可能的显示结果如下:

/etc/logrotate.d/mysql/etc/selinux/targeted/active/modules/100/mysql/etc/selinux/targeted/tmp/modules/100/mysql/var/lib/mysql/var/lib/mysql/mysql/usr/bin/mysql/usr/lib64/mysql/usr/local/mysql

根据需求使用以下命令 依次 对配置文件进行删除

rm -rf /var/lib/mysql

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

rm -rf /etc/my.cnf

1.1.2 删除MariaDB的文件,

由于MySQL在CentOS7中收费了,所以已经不支持MySQL了,取而代之在CentOS7内部集成了mariadb,而安装MySQL的话会和MariaDB的文件冲突,所以需要先卸载掉MariaDB.

使用rpm 命令查找出要删除的mariadb文件;

rpm -pa | grep mariadb

可能的显示结果如下:

mariadb-libs-5.5.56-2.el7.x86_64

删除上面的程序

rpm -e mariadb-libs-5.5.56-2.el7.x86_64

可能出现错误提示如下:

依赖检测失败:

libmysqlclient.so.18()(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要

libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要

libmysqlclient.so.18(libmysqlclient_18)(64bit) 被 (已安裝) postfix-2:2.10.1-6.el7.x86_64 需要

使用强制删除:

rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

至此就将原来有的mysql 和mariadb数据库删除了;

1.2 安装mysql

1.2.1 下面mysql官网提供的mysql repo源

centos的yum 源中默认是没有mysql的,所以我们需要先去官网下载mysql的repo源并安装;

mysql官网下载链接:mysql repo下载地址 如下:

4d18aef4ff405f8056df4a8748e50d6b.png

1.22右键复制链接,通过wget下载

wget https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm

4bdcd6a925aee47126d33a47ac9cc785.png

61596b364f09f6f24806ef1d8fc13249.png

1.2.3 安装 yum repo文件并更新 yum 缓存;

rpm -ivh mysql57-community-release-el7-11.noarch.rpm

执行结果:

会在/etc/yum.repos.d/目录下生成两个repo文件mysql-community.repo mysql-community-source.repo

7b4d75085042b7d15c4019fb0937494a.png

更新 yum 命令

yum clean all

yum makecache

1.2.4 使用 yum安装mysql

当我们在使用yum安装mysql时,yum默认会从yum仓库中安装mysql最新的GA版本;如何选择自己的版本;

第一步: 查看mysql yum仓库中mysql版本,使用如下命令

yum repolist all | grep mysql

baedd672d78e0df66839e1db0ad09c62.png

可以看到 MySQL 5.5 5.6 5.7为禁用状态 而MySQL 8.0为启用状态;

第二步 使用yum-config-manager 命令修改相应的版本为启用状态,其他版本为禁用状态,以mysql8为例

yum-config-manager --enable mysql80-community

或者可以编辑 mysql repo文件,

cat /etc/yum.repos.d/mysql-community.repo

8dfd8e60305395b11ef8503be657ee6c.png

将相应版本下的enabled改成 1 ,其他版本改成 0 即可;

1.2.5 安装mysql 命令如下:

yum install mysql-community-server

77f84d031f03c8b1c94998c75e19fa01.png

设置mysql不区分大小写

修改配置文件:vim /etc/my.cnf

#添加如下配置:

#只有在安装完成之后,初始化数据库之前,修改my.cnf,然后再初始化数据库才有效

#如果你不在意数据的话直接删除数据

#1 停止MySQL

#2 删除 MySQL的数据 /var/lib/mysql

#3 修改该 lower_case_table_names = 1

#4 启动 mysql

lower_case_table_names= 1

91400dae847f69cd1bd0422563de750e.png

1.2.6 开启mysql 服务

systemctl start mysqld.service

1.2.7 获取初始密码登录mysql

mysql在安装后会创建一个root@locahost账户,并且把初始的密码放到了/var/log/mysqld.log文件中;

cat /var/log/mysqld.log | grep password

grep 'temporary password' /var/log/mysqld.log

c3177c236c8d79e4fa017b3e9019101f.png

使用初始密码登录mysql ,四个密码最后一个是登陆密码

mysql -u root -p

修改初始密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass4!';

mysql新的安全机制要求,mysql的密码必须包含英文大小写、数字以及特殊字符

查看密码策略的相关信息

show variables like ‘%password%’;

c931f4cd3262dc04cafc6c1dd2c01720.png

validate_password_policy:密码策略,默认为MEDIUM策略

validate_password_dictionary_file:密码策略文件,策略为STRONG才需要

validate_password_length:密码最少长度

validate_password_mixed_case_count:大小写字符长度,至少1个

validate_password_number_count :数字至少1个

validate_password_special_char_count:特殊字符至少1个

上述参数是默认策略MEDIUM的密码检查规则。

mysql主要有三种密码策略

4fb2074ab6bb974da741ef48a1852753.png

1.2.8 在防火墙中开启3306端口

CentOS7默认使用的是firewall作为防火墙,我这里改为习惯常用的iptables防火墙

第一步: 关闭firewall防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

systemctl mask firewalld.service

第二步: 安装iptables防火墙

yum install iptables-services -y

第三步: 启动iptable防火墙

systemctl enable iptables

systemctl start iptables

第四步: 编辑防火墙增加端口 防火墙文件位置为: /etc/sysconfig/iptables

vim /etc/sysconfig/iptables

在倒数第三行上增加

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT

b780e916ed83ceb834313794794699fb.png

第五步: 重启防火墙

systemctl enable iptables.service

systemctl start iptables.service

1.2.9 将mysql 服务加入开机启动项,并启动mysql进程

systemctl enable mysqld.service

systemctl start mysqld.service

常用mysql服务命令:

登录mysql

mysql-u username -p

退出mysql

quit

启动mysql

systemctl start mysqld.service

结束

systemctl stop mysqld.service

重启

systemctl restart mysqld.service

开机自启

systemctl enable mysqld.service

查看mysql版本select version();

删除mysql服务

chkconfig --list | grep -i mysql

chkconfig --del mysql

第二部分 Navicat 连接 Mysql8

2.1 开启mysql远程服务:

2.1.1 修改mysql数据库下的user表中host的值

可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"登录mysql数据库 执行如下命令:

mysql -u root -p

use mysql;

update userset host='%' where user='root';

select host, user, authentication_string, plugin from user;

ed429088b1221733535a47551332acc1.png

2.1.2 使用授权的方式

赋予任何主机访问数据的权限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;

mysql> FLUSH PRIVILEGES;

如果想myuser用户使用mypassword密码从任何主机连接到mysql服务器的话。

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

2.2 在使用 Navicat for Mysql连接mysql 8.0时会报如下错误:

Authentication plugin 'caching_sha2_password' cannot be loaded:

mysql8.0 引入了新特性 caching_sha2_password;这种密码加密方式客户端不支持;客户端支持的是mysql_native_password 这种加密方式;

我们可可以查看mysql 数据库中user表的 plugin字段;

0b93a70cc1d2c892d842bbb8f2d13227.png

可以使用命令将他修改成mysql_native_password加密模式:

update user set plugin='mysql_native_password' where user='root';

再用Navicat链接 就可以链接成功;

windows安装mysql8

1、官网下载软件MySQL8

96c1e8694d9fddf980d6423d12b440c9.png

直接点击我红色记号笔圈出的超链接,这句话的中文意思是:不用了,直接开始下载

2. 设置系统环境变量

这个不多说了百度上一堆,配置这个只是为了命令行方便...

3. 编写配置文件

如解压位置为D:\App\MySQL\mysql-8.0.11-winx64

就在此处手动创建my.ini文件,文件内容如下:

[mysql]

#设置mysql客户端默认字符集

default-character-set=utf8

[mysqld]

#设置3306端口

port = 3306#设置mysql的安装目录

basedir=D:\App\MySQL\mysql-8.0.11-winx64

#设置mysql数据库的数据的存放目录

datadir=D:\App\MySQL\mysql-8.0.11-winx64\data

#允许最大连接数

max_connections=200#服务端使用的字符集默认为8比特编码的latin1字符集

character-set-server=utf8

#创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

注意修改安装目录与数据存放目录

4cc9fd3baabefea692a5eaf859c3556e.png

4. 数据库初始化

用管理员身份运行命令行,进入安装MySQL下的bin目录输入如下命令:

自动生成root用户,可以不带密码:

mysqld --initialize-insecure

或者带随机密码:

mysqld --initialize

随机密码被保存在错误日志里,位于(前面配置好的datadir)数据文件夹下,文件名为:主机名.err

注意:如果要重新初始化,必须先清空data文件夹。(包括停止下一步的服务)

我看的教程就是没有这一步,导致:

服务无法启动。

服务器没有报告任何错误。

请键入 NET HELPMSG 3534 以获得更多的帮助。

mysqld --initialize --console

注意!执行输出结果里面有一段:

[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: rI5rvf5x5G,E 其中root@localhost:后面的“rI5rvf5x5G,E”就是初始密码(不含首位空格)。在没有更改密码前,需要记住这个密码,后续登录需要用到。

5. 安装并启动服务

在命令行下执行。

安装服务:

mysqld -install

启动服务:

net start mysql

回退的时候反过来

停止、卸载服务:

net stop mysql

mysqld -remove

6. 进入MySQL

无密码进入:

mysql -u root

有密码的进入方式:

mysql -u root -p

有密码的话进去就要求输入,随机密码的话位置上面提到过了。

感动,终于看到了:

mysql>

最后说下如果客户端连接如果出现caching-sha2-password问题

解决方案如下:

首先:ALTER USER 'root'@'localhost' IDENTIFIED BY 'password'PASSWORD EXPIRE NEVER; #修改加密规则

接着:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password'; #更新一下用户的密码

最后:FLUSH PRIVILEGES; #刷新权限

2、客户端连接时,提示客户端版本过低(即:mysql 1521错误)

网上大部分的解决办法是使用:set password for '用户名' @ '主机名' = old_password('密码');

执行时发现old_password函数已经不支持了。。。

3、Java连接Mysql8时要注意一下几点:

1)驱动不再是com.mysql.jdbc.Driver,正确可用的应该是:com.mysql.cj.jdbc.Driver

2)注意项目引入的Mysql版本,应该是:

mysql

mysql-connector-java

8.0.11

3)如果连接仍然提示连接失败(Communications link failure),注意修改my.ini两项配置为如下:

interactive_timeout=604800wait_timeout=604800

正文完毕~~~~~下面是我的application.properties:

spring.datasource.url=jdbc:mysql://localhost:3306/wechat?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false

spring.datasource.username=root

spring.datasource.password=*****spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

spring.datasource.max-idle=10spring.datasource.max-wait=10000spring.datasource.min-idle=5spring.datasource.initial-size=5server.port= 80server.session.timeout=10#防止乱码

spring.http.encoding.force=truespring.http.encoding.charset=UTF-8spring.http.encoding.enabled=trueserver.tomcat.uri-encoding=UTF-8# 配置jsp文件的位置,默认位置为:src/main/webapp

spring.mvc.view.prefix=/pages/# 配置jsp文件的后缀

spring.mvc.view.suffix=.jsp

#Mybaties

mybatis.type-aliases-package=wechatService.myb.entity

mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

mybatis.config-location=classpath:mybatis/mybatis-config.xml

#cache 多个用逗号分开

spring.cache.cache-names=userCache

spring.cache.jcache.config=classpath:ehcache.xml

#LOG日志

logging.level.wechatService=WARN

logging.level.wechatService.myb.mapper=DEBUG

logging.file=logs/WeChatServer.log

Centos7重置Mysql 8的 root 密码

问题产生背景:

安装完 最新版的 mysql8后忘记了密码,想重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下:

第一步:修改配置文件免密码登录mysql

vim /etc/my.cnf

9768efd310ee92a8d5f82d28250a0d0b.png

在 [mysqld]最后加上如下语句 并保持退出文件;

skip-grant-tables

013a8d0c617f3708255f3e04377df107.png

重启mysql服务:

service mysqld restart

第二步免密码登录到mysql上;直接在命令行上输入:

mysql//或者

mysql -u root -p//password直接回车

第三步: 给root用户重置密码;

首先查看当前root用户相关信息,在mysql数据库的user表中;

select host, user, authentication_string, plugin from user;

9224df9f69b7497a306d2d0f76486ed3.png

修改root密码规则和外部访问:

#不支持下面的密码格式

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

ERROR1819(HY000): Your password does not satisfy the current policy requirements

#mysql8的密码格式必须是大小写+数字+特殊字符

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'myPwd@123';

Query OK,0 rows affected (0.08sec)

mysql>

需要创建用户和配置远程访问权限

创建用户:

创建用户(myuser:用户名;%:任意ip,也可以指定,root默认就是localhost;123456:登录密码)

mysql> CREATE USER 'myuser'@'%' IDENTIFIED BY 'myPwd@123';

配置权限:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'myPwd@123' WITH GRANT OPTION;

修改root密码规则和允许访问的 IP 主机:

mysql> update user set host='%',plugin='mysql_native_password' where user='root';

Query OK,0 rows affected (0.32sec)

Rows matched:1 Changed: 0 Warnings: 0mysql> select host, user, authentication_string, plugin fromuser;+-----------+------------------+------------------------------------------------------------------------+-----------------------+

| host | user | authentication_string | plugin |

+-----------+------------------+------------------------------------------------------------------------+-----------------------+

| % | root | *10FD17EEA8DD928E433A24DFFD3805DC5381D138 | mysql_native_password |

| % | zs | *10FD17EEA8DD928E433A24DFFD3805DC5381D138 | mysql_native_password |

| localhost | mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |

| localhost | mysql.session | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |

| localhost | mysql.sys | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password |

+-----------+------------------+------------------------------------------------------------------------+-----------------------+

5 rows in set (0.03sec)

mysql>FLUSH PRIVILEGES;

Query OK, 0 rows affected (0.04sec)

4e010a8b272ee14205e994f68b528122.png

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值