centos mysql 笔记(内含vagrant mysql 镜像)


《SpringCloud Nginx 高并发核心编程》 环境搭建 - 系列

组件 连接地址
windows centos 虚拟机 安装&排坑 vagrant+java+springcloud+redis+zookeeper镜像下载(&制做详解))
centos mysql 安装&排坑 centos mysql 笔记(内含vagrant mysql 镜像)
linux kafka安装&排坑 kafka springboot (或 springcloud ) 整合
Linux openresty 安装 Linux openresty 安装
【必须】Linux Redis 安装(带视频) Linux Redis 安装(带视频)
【必须】Linux Zookeeper 安装(带视频) Linux Zookeeper 安装, 带视频
Windows Redis 安装(带视频) Windows Redis 安装(带视频)
RabbitMQ 离线安装(带视频) RabbitMQ 离线安装(带视频)
ElasticSearch 安装, 带视频 ElasticSearch 安装, 带视频
Nacos 安装(带视频) Nacos 安装(带视频)
【必须】Eureka Eureka 入门,带视频
【必须】springcloud Config 入门,带视频 springcloud Config 入门,带视频
【必须】SpringCloud 脚手架打包与启动 SpringCloud脚手架打包与启动
Linux 自启动 假死自启动 定时自启 Linux 自启动 假死启动

centos mysql 虚拟机镜像

疯狂创客圈网盘,为你们准备了springcloud.box 虚拟机镜像,里边预装了java 、 redis 、zookeeper、kafka、Eureka、springcloud config、mysql 等必须的组件,省去你们准备开发环境的烦恼,何不妙哉。网盘地址请参见【博客园总入口mysql

若是真正要本身安装,请使用下面的教程。 这也是笔者的安装笔记,而且会持续进行问题记录。linux

安装mysql

在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了须要,仍是要在系统中安装MySQL,并且安装完成以后能够直接覆盖掉MariaDB。nginx

1 下载并安装MySQL官方的 Yum Repository

因为CentOS 的yum源中没有mysql,须要到mysql的官网下载yum repo配置文件。下载命令:面试

[root@localhost ~]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm

执行过程以下:redis

[root@localhost work]# wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
--2020-12-27 02:02:22--  http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
.....
HTTP request sent, awaiting response... 200 OK
Length: 25548 (25K) [application/x-redhat-package-manager]
Saving to: ‘mysql57-community-release-el7-10.noarch.rpm’

100%[==================================================================================================>] 25,548       127KB/s   in 0.2s

2020-12-27 02:04:42 (127 KB/s) - ‘mysql57-community-release-el7-10.noarch.rpm’ saved [25548/25548]

使用上面的命令就直接下载了安装用的Yum Repository,大概25KB的样子,spring

而后进行repo的安装:

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

执行过程以下:sql

[root@localhost work]# rpm -ivh mysql57-community-release-el7-10.noarch.rpm
warning: mysql57-community-release-el7-10.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql57-community-release-el7-10 ################################# [100%]

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

使用yum命令便可完成安装

必须进入到 /etc/yum.repos.d/目录后再执行如下脚本, 而后就能够直接yum安装了。

[root@localhost ~]# yum install mysql-server

这步可能会花些时间,安装完成后就会覆盖掉以前的mariadb。

[root@localhost yum.repos.d]# yum install mysql-server
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 .....
Installed:
  mysql-community-libs.x86_64 0:5.7.32-1.el7 mysql-community-libs-compat.x86_64 0:5.7.32-1.el7 mysql-community-server.x86_64 0:5.7.32-1.el7

Dependency Installed:
  mysql-community-client.x86_64 0:5.7.32-1.el7                         mysql-community-common.x86_64 0:5.7.32-1.el7

Dependency Updated:
  openssl.x86_64 1:1.0.2k-21.el7_9             openssl-libs.x86_64 1:1.0.2k-21.el7_9             postfix.x86_64 2:2.10.1-9.el7

Replaced:
  mariadb-libs.x86_64 1:5.5.44-2.el7.centos

Complete!

启动msyql:

启动MySQL

systemctl start mysqld

登陆:

获取安装时的临时密码(在第一次登陆时就是用这个密码):grep 'temporary password' /var/log/mysqld.log

[root@localhost yum.repos.d]# grep 'temporary password' /var/log/mysqld.log
2020-12-27T02:34:04.063826Z 1 [Note] A temporary password is generated for root@localhost: LXwH6NSf*kVh

使用临时密码,登陆mysql

mysql -u root -p

而后输入密码(刚刚获取的临时密码)LXwH6NSf*kVh

登陆成功后,修改密码

一、首先须要设置密码的验证强度等级,设置 validate_password_policy 的全局参数为 LOW 便可,

输入设值语句 “ set global validate_password_policy=LOW; ” 进行设值,

二、当前密码长度为 8 ,若是不介意的话就不用修改了,按照通用的来说,设置为 6 位的密码,设置 validate_password_length 的全局参数为 6 便可,

输入设值语句 “ set global validate_password_length=6; ” 进行设值,

三、如今能够为 mysql 设置简单密码了,只要知足六位的长度便可,

输入修改语句 “ ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; ” 能够看到修改为功,表示密码策略修改为功了!!!

执行过程以下:

[root@localhost yum.repos.d]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.32

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> set global validate_password_policy=LOW
    -> ;
Query OK, 0 rows affected (0.03 sec)

mysql> set global validate_password_length=6;
Query OK, 0 rows affected (0.01 sec)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.04 sec)

注意:必定要记得在写sql的时候要在语句完成后加上" ; "

经常使用命令

一、启动MySQL

systemctl start mysqld

二、关闭MySQL

systemctl stop mysqld

三、重启MySQL

systemctl restart mysqld

四、查看MySQL运行状态

systemctl status mysqld

五、设置开机启动

systemctl enable mysqld

六、关闭开机启动

systemctl disable mysqld

问题排解

mysql账号不容许从远程登录

默认状况下,mysql账号不容许从远程登录,只能在localhost登陆。本文提供了二种方法设置mysql能够经过远程主机进行链接。

  • 1、改表法
    在localhost登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,将”localhost”改称”%”
#mysql -u root -p
Enter password:
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>select host, user from user;

​ 说明: % 表明任意的客户端,可替换成具体IP地址。

  • 2、受权法

例如: 你想myuser使用mypassword(密码)从任何主机链接到mysql服务器的话。

  mysql>GRANT ALL PRIVILEGES ON . TO ‘myuser’@’%’IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;

  若是你想容许用户myuser从ip为192.168.1.6的主机链接到mysql服务器,并使用mypassword做为密码

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

配置默认编码为utf8:

vi /etc/my.cnf

添加

[mysqld]

 character_set_server=utf8 
 init_connect='SET NAMES utf8'

其余配置文件:

/etc/my.cnf 日志文件:/var/log//var/log/mysqld.log

服务启动脚本:/usr/lib/systemd/system/mysqld.service

socket文件:/var/run/mysqld/mysqld.pid

不区分大小写

找到你安装MySQL的时候的my.cnf这个文件
以下图所示:在 mysqld下添加一行
lower_case_table_names=1 (1不区分大小写,0区分大小写,默认为0)

远程链接 Mysql 太慢问题

尝试解决了一下上面的链接超时问题,可是发现并无什么用,仍是会出现上面的问题。因而便怀疑是否是远程链接 Mysql 太慢致使了链接超时?由于我在 CentOS7 服务端和 Windows 本地的 Navicat 链接 mysql 都没问题。在网上查询了下,发如今 mysql 的配置文件 /etc/my.cnf 中增长以下配置参数:

# 注意该配置是加在[mysqld]下面

[mysqld]

skip-name-resolve

而后须要重启 mysql 服务。由于根听说明,若是 mysql 主机查询和解析 DNS 会致使缓慢或是有不少客户端主机时会致使链接很慢。同时,请注意在增长该配置参数后,mysql的受权表中的host字段就不可以使用域名而只可以使用ip地址了,由于这是禁止了域名解析的结果。

从防火墙开放端口,或者关闭防火墙

  • 经过systemctl status firewalld查看firewalld状态
[root@localhost yum.repos.d]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
   Active: inactive (dead)
  • 若是要关闭防火墙设置,可能经过systemctl stop firewalld这条指令来关闭该功能。
systemctl stop firewalld.service   #关闭防火墙
  • 启动防火墙
systemctl start firewalld

再次经过systemctl status firewalld查看firewalld状态,显示running即已开启了。

  • 增长防火墙放行的规则:

再次执行执行firewall-cmd --permanent --zone=public --add-port=3306/tcp,提示success,表示设置成功,

firewall-cmd --permanent --zone=public --add-port=3306/tcp
  • 这样就能够继续后面的设置了。从新加载防火墙
firewall-cmd --reload

说明:开发环境,关闭防火墙便可

报错:Specified key was too long; max key length is 767 bytes

1 ERROR 1071 (42000): Specified key was too long; max key length is 767 bytes

版本5.6 解决方案;经过root帐号,设置两个全局变量:

set global innodb_large_prefix=on;
set global innodb_file_format=Barracuda;

报错:MySql Host is blocked because of many connection errors;

具体异常

MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'

  • 缘由分析:

查看 tomcat 的日志文件,发如今报错开始部分出现了这个错误。通过查询,发现这个错误的 缘由 是:同一个 ip 在短期内产生太多(超过 mysql 数据库 maxconnectionerrors 的最大值)中断的数据库链接而致使的阻塞。

  • 解决方法:

进入 CentOS7 服务器:

  • 方法一:提升容许的maxconnectionerrors数量(治标不治本):
  1. 进入 Mysql 数据库查看 maxconnectionerrors: show variables like '%max_connection_errors%';
  2. 修改 maxconnectionerrors 的数量为 1000: set global max_connect_errors = 1000;
  3. 查看是否修改为功:show variables like '%max_connection_errors%';
  • 方法二:使用 mysqladmin flush-hosts 命令清理一下 hosts 文件:
  1. 查找 mysqladmin 的路径:whereis mysqladmin
  2. 执行命令,如:/usr/local/mysql5.5.35/bin/mysqladmin -uroot -pyourpwd flush-hosts

注: 方法二清理 hosts 文件,也能够直接进入 mysql 数据库执行命令:mysql> flush hosts;

回到◀疯狂创客圈

疯狂创客圈 - Java高并发研习社群,为你们开启大厂之门

相关文章
相关标签/搜索