linux第三阶段--第三方软件(一)MySQL的概述和二进制安装(官网版)
MySQL介绍及安装
一、MySQL概述
DB2 POSTGRE-SQL
1、关系型数据库与非关系型数据库
RDBMS(relational database management system),既关系型数据库管理系统。
简单来说,关系型数据库,是指采用了二维表格来组织数据的数据库。

扩展:数据库在行业内一般会有两种情况,关系型数据库与非关系型数据库。非关系型数据库并不是通过二维表格来维护数据的,而是通过key/value键值对来维护数据的。
关系型数据库,是指采用了二维表格来组织数据的数据库。
非关系型数据库 ,是通过key/value键值对来维护数据的。
2、常见的关系型数据库
oracle、mysql、DB2(IBM)、Sybase、SQL server(Microsoft微软)、IBM Informix
关系型数据库的最大特点就是事务的一致性:所以也在对事物一致性的维护中有很大的开销.
3、什么是事务
1)事务由一条或者多条sql语句组成;
2)在事务中的操作,这些sql语句要么都成功执行,要么都不执行,这就是一个事务。
举例说明:
-
登陆ATM机,输入密码; -
连接数据库,验证密码; -
验证成功,获得用户信息,比如存款余额等; -
用户输入需要转账的金额,按下确认键; -
==从后台数据库中减掉用户账户上的对应金额(update语句);== -
==从后台数据库中给对方账户增加相应的金额(update语句);== -
确认,退卡,走人;
4、事务特点(ACID)
-
原子性(Atomicity):
事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
-
一致性(Consistency):
指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态,不能破坏关系数据的完整性以及业务逻辑上的一致性。
-
隔离性(Isolation):
一个事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。
-
持久性(Durability):
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
对数据的一致性要求较高;典型的银行及支付系统类;
5、MySQL数据库概述
- MySQL是一种关系型数据库管理系统
- 由瑞典MySQL AB 公司开发,目前属于Oracle旗下
- MySQL是C/S架构
6、MySQL数据库版本
-
**社区版:MySQL Community Edition (GPL) **
- 可以看做是企业版的“广泛体验版(小白鼠版)”,未经各个专有系统平台的压力测试和性能测试
- 基于GPL协议发布,可以随意下载使用
- 没有任何官方技术支持服务
-
**企业版:MySQL Enterprise Edition(commercial) **
- 提供了比较全面的高级功能、管理工具及技术支持
- 安全性、稳定性、可扩展性比较好
-
集群版:MySQL Cluster CGE(commercial)
扩充:关于版本的命名方式如何定义?
| 版本 | 说明 |
|---|---|
| α(Alpha)版 | 内测版,内部交流或者专业测试人员测试用。Bug较多,普通用户最好不要安装。 |
| β(Beta)版 | 公测版,专业爱好者大规模测试用,存在一些缺陷,该版本也不适合一般用户安装。 |
| γ ( Gamma )版 | 相当成熟的测试版,与即将发行的正式版相差无几。 |
| Final | 正式版本 |
| Free | 自由版本 |
| Release | 发行版本 |
| Standard | 标准版本 |
| Mini | 迷你精简版本,只有最基本的功能 |
| Upgrade | 升级版本 |
| GA(GenerallyAvailable) | 开发团队认为该版本是稳定版,可以在较为关键的场合使用。 |
| Retail | 零售版 |
7、获取MySQL软件
官网:www.mysql.com
第一步:单击Downloads下载

第二步:找到社区版

第三步:单击进入MySQL社区版下载页面

第四步:选择合适的版本

① GLIBC版本(相当于Windows中的绿色版)

② 源码编译版本(需要源码编译三步走 => 配置 + 编译 + 安装)

二、CentOS7.6操作系统最小化安装
1、创建自定义虚拟机环境
第一步:选择自定义(根据需求设定服务器环境)

第二步:选择稍后安装操作系统

第三步:选择操作系统类型

第四步:设置虚拟机名称及路径(建议剩余空间大于等于20G)

第五步:设置CPU核数

第六步:设置MEM内存

第七步:设置网络连接(NAT模式)

剩下的全部默认,一路下一步,直至设置完成!
2、安装CentOS7.6最小化模式
第一步:加载光盘镜像

第二步:启动虚拟机,安装CentOS7.6

第三步:设置安装语言(必须选择全英文)

第四步:设置服务器时间(Asia/Shanghai)

第五步:软件选择,最小化然后必须要勾选开发工具(里面主要是GCC编译器)

第六步:自动分区

第七步:设置网络连接为自动连接(开机后,自动连接网络)

3、CentOS7.6操作系统最小化后续配置
① 设置主机名称
# hostnamectl set-hostname hd1
# su
② 更改IP获取方式为静态设置以及绑定主机名+IP到/etc/hosts
# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="none"
IPADDR=192.168.1.11
NETMASK=255.255.255.0
GATEWAY=192.168.1.2
DNS1=8.8.8.8
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"# vi /etc/hosts
192.168.1.11 hd1# systemctl restart network
如果是多网卡形式,建议使用ifdown与ifup
# ifdown ens33
# ifup ens33# ip a
③ 关闭防火墙与SELinux
# systemctl stop firewalld
# systemctl disable firewalld# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
④ 配置公网YUM源(可以考虑腾讯)
# yum install wget -y
# mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.cloud.tencent.com/repo/centos7_base.repo# yum clean all
# yum makecache
⑤ 安装扩展软件(bash-completion自动补全、vim编辑器、net-tools网络工具包以及ntpdate时间同步工具)
# yum install bash-completion vim net-tools ntpdate -y
⑥ ntpdate时间同步
# ntpdate 120.25.108.11
4、拍摄快照:把CentOS7.6最小化系统做模板机


拍摄快照完成后,这台机器就可以关机啦,以后专门充当克隆用的母机!
三、MySQL的安装的几种方式
1、MySQL安装方式
二进制软件包安装
① yum安装或rpm安装(略)
② glibc版本安装 二进制安装(相当于Windows中的绿色软件)
命名:mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
依赖[^glibc]库,可以安装在通用的Linux系统下
源码包编译安装
命名:mysql-5.7.31.tar.gz,通用的Linux下都可以编译安装。
2、三种安装方式的区别
| 安装方式 | 优点 | 缺点 |
|---|---|---|
| rpm | 安装卸载简单 | 可定制性差 |
| glibc | 可定制性相比rpm包灵活些 | 安装相比rpm包复杂些,需要手动初始化数据库 |
| 源码安装 | 可定制性最强,根据需求和功能定制 | 安装麻烦,需要手动初始化数据库 |
在企业中,数据库的安装很少使用rpm方式,大部分都是基于源码安装以及glibc安装!
3、区分数据库与数据库实例
㈠ 什么是MySQL数据库?
数据库(database): 操作系统或存储上的数据文件的集合。mysql数据库中,数据库文件可以是* .frm、.MYD、.MYI、*.ibd等结尾的文件, 不同存储引擎文件类型不同。
㈡ 什么是MySQL数据库实例?
数据库实例(instance): 由后台进程或者线程以及一个共享内存区组成。共享内存可以被运行的后台线程所共享。 数据库实例才是真正操作数据库的。
注意:MySQL的后台守护程序mysqld是单进程多线程的工作模式。
㈢ 什么是MySQL数据库服务器?
**数据库服务器(database server):**部署安装数据库实例的服务器。
㈣ 数据库和数据库实例之间的关系是什么?
通常情况下,数据库实例和数据库是一一对应的关系,也就是一个数据库实例对应一个数据库; 但是,在集群环境中存在多个数据库实例共同使用一个数据库。oracle RAC
-------------------------------------------------8.18号实现开始--------------------------
四、MySQL的GLIBC版本安装
1、获取MySQL GLIBC版本

2、学会看官方文档

3、安装MySQL依赖库软件
第一步:克隆模板机,生成MySQL服务器
第二步:启动系统
第三步:更改主机名称为mysql.hd.com,然后重启网络
第四步:拍摄快照
第五步:安装依赖库libaio库
# yum install libaio -y
4、上传软件包解压,了解目录结构
# tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz
# ls mysql-5.7.31-linux-glibc2.12-x86_64
解压完成后,目录结构如下图所示:

安装需求:
| 选项 | 值(自定义也可以采用默认形式) |
|---|---|
| 安装路径 | /mysql_3306 |
| 数据路径 | /mysql_3306/data |
| 端口号 | 3306 |
5、软件的安装(查看官方说明)
https://dev.mysql.com/doc/refman/5.7/en/binary-installation.html
最简单的安装过程如下:
#useradd -r -s /bin/false mysql #创建程序账号
#tar -xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz #解压,跟上面的命令重复了
#mv mysql-5.7.31-linux-glibc2.12-x86_64 /usr/local/mysql #移动
#cd /usr/local/mysql/
#mkdir mysql-files #创建一个目录
#chown mysql:mysql mysql-files/
#chmod 750 mysql-files/
#rm -rf /etc/my.cnf #删除主配置文件,不删除的话可能会导致初始化失败
#bin/mysqld --initialize --user=mysql #初始化A temporary password is generated for root@localhost: fuYKYm*ds5sD #产生了随机密码#bin/mysql_ssl_rsa_setup
#bin/mysqld_safe --user=mysql & #启动数据库并掉入后台执行
#cp support-files/mysql.server /etc/init.d/mysql.server #设置mysql的启动脚本
#netstat -nplt |grep 3306 #查看端口号#bin/mysql -uroot -p #登录mysql数据库#mysql> set password="123"; #设置密码为123
#mysql> flush privileges; #刷新权限#把mysql客户端命令添加到环境变量,以后随时可以访问
# echo "export PATH=$PATH:/usr/local/mysql/bin" >>/etc/profile
# source /etc/profile #验证服务是否能够正常关闭和启动# service mysql.server start
Starting MySQL. SUCCESS! # service mysql.server stop
Shutting down MySQL.. SUCCESS! #忘记密码怎么办?#service mysql.server stop #关闭数据库
# mysqld --skip-grant-tables --user=mysql &
# mysql #直接登陆数据库系统,不需要输入密码mysql> UPDATE mysql.user SET authentication_string = PASSWORD('123456')
WHERE user = 'root' AND host = 'localhost';
mysql> FLUSH PRIVILEGES;#设置开机自启动(centos6)
# chkconfig --add mysql.server #将mysql.server添加到chkconfig管理服务中
# chkconfig mysql.server on #设置mysql.server 在3、5级别是开机启动是on的
# chkconfig --list #查看chkconfig管辖的服务启动情况。
mysql.server 0:关 1:关 2:开 3:开 4:开 5:开 6:关
netconsole 0:关 1:关 2:关 3:关 4:关 5:关 6:关
network 0:关 1:关 2:开 3:开 4:开 5:开 6:关#手动添加修改mysql的主配置文件(默认5.7之后的二进制版本没有my.cnf)
# vim /usr/local/mysql/my.cnf
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock===============================我是分割线===========================
选项说明:
[mysqld] 代表针对服务器端进行配置
basedir 代表数据库的安装目录
datadir 代表数据目录,以后专门用于存放数据文件的(核心目录)
socket 代表套接字文件,专门为客户端与服务器端连接提供一个桥梁 ip+端口# service mysql.server restart
----------------------------------------------------------------8.18号实验结束--------------------------------------
自定义安装过程如下:
第一步:创建一个数据库专用账号mysql(其所属组也为mysql)
# useradd -r -s /sbin/nologin mysql
# id mysql
第二步:清空系统中的原有mariadb的配置文件(/etc/my.cnf)
# rm -rf /etc/my.cnf
第三步:把mysql解压后的压缩包(GBLIC版本)移动到/根目录下,然后更名为mysql_3306
# mv mysql-5.7.31-linux-glibc2.12-x86_64 /mysql_3306
第四步:切换到mysql工作目录/mysql_3306,创建一个mysql-files
# cd /mysql_3306
# mkdir mysql-files
第五步:更改mysql-files权限
# chown mysql:mysql mysql-files
# chmod 750 mysql-files
第六步:初始化数据库(可以实现数据库的初始化,而且会产生一个随机密码)
# bin/mysqld --initialize --user=mysql --basedir=/mysql_3306
选项说明:
--initialize 初始化(真正开始干活)
--user=mysql 以mysql用户的身份初始化数据库,产生文件都是mysql作为拥有者
--basedir=xxx mysql其安装目录,非常重要运行完毕后,观察最后一行,保存root账号的密码,以备后期使用。
2020-08-24T06:46:24.889735Z 1 [Note] A temporary password is generated for root@localhost: (cn_jS+*n2wh
经验之谈:想查看mysql软件有没有初始化成功,主要看mysql目录下有没有产生data文件夹且文件夹中至少要有一个mysql的文件夹。
第七步:设置安全加密连接(SSL),数据传输会采用加密形式,适合敏感数据
# bin/mysql_ssl_rsa_setup --datadir=/mysql_3306/data
第八步:启动MySQL数据库
# cp support-files/mysql.server /etc/init.d/mysql_3306
注:默认情况下,GBLIC版本的数据库要求安装到/usr/local/mysql目录,其mysql.server脚本中对应的目录也是/usr/local/mysql,这会导致mysql无法启动。所以可以更改其basedir以及datadir两个变量
# vim /etc/init.d/mysql_3306
46行 basedir=/mysql_3306
47行 datadir=/mysql_3306/data
第九步:启动MySQL数据库(不能使用systemctl,只能使用service)
# service mysql_3306 start
Starting MySQL.Logging to '/mysql_3306/data/mysql.itcast.cn.err'.
特别说明:当MySQL启动成功后,其日志会自动写入到data数据目录中的主机名称.err文件中,这个文件一定要多看,涉及MySQL无法启动、启动报错,其详细的原因99%在.err文件中可以找到问题所在!
6、软件的安装常见问题答疑
问题1:为什么一定要删除/etc/my.cnf文件,不删除有何影响?
答:/etc/my.cnf文件是操作系统为mariadb软件预留的配置的文件,之所以一定要删除这个文件,主要原因在于数据库在初始化时,首先在自己的安装目录下寻找有没有my.cnf配置文件,如果有,会自动根据里面的配置信息进行初始化。如果找不到,则到/etc目录下寻找my.cnf文件,如果有,依然会按照其内部的配置进行初始化,但是由于/etc目录下的my.cnf文件是mariadb的,这会导致我们的初始化如果按照mariadb的配置,会导致初始化失败。
问题2:mysql-files文件夹到底干什么的?
答:目前mysql-files没有什么用,但是你必须要创建,因为GLIBC属于二进制软件包,其很多配置已经默认了,包括mysql-files文件夹,如果没有这个文件夹可能导致mysql无法启动。
mysql-files:主要用于数据文件的导入与导出(备份与还原),MySQL的备份会产生一个文件,可以xxx.sql或xxx.txt。mysql-files就是导入与导出时,所指定的默认目录。
问题3:到底怎么判断数据库是否初始化成功了?
答:数据库的安装容易出错的地方就是初始化,一旦初始化失败了,数据库100%启动报错。如何确认数据库是否初始化成功了呢?主要看安装目录下有没有生成一个data的文件夹。
一定要看准一点,文件夹名称叫data(数据目录),不是date(时间)
问题4:为什么一定要把mysql.server放在/etc/init.d目录下,不放行不行?
答:不放也可以,但是这个时候就不能使用service命令启动以及添加到开机启动项了。只能通过bin/mysqld_safe脚本启动数据库。
/etc/init.d是CentOS6以及早期版本中的服务脚本目录,只要把Shell启动脚本放在这个目录下,你就可以使用service进行管理。
问题5:为什么一定要改变/etc/init.d/mysql_3306中的basedir与datadir?
答:GLIBC版本属于二进制版本,默认已经配置了很多内容,包括默认的安装路径/usr/local/mysql,一旦你的mysql没有安装在这个目录下,则必须手工设置basedir以及datadir其位置,否则脚本无法启动mysql程序
问题6:如何让mysql自动启动?
# chkconfig --list 查询系统中的所有开机启动项
# chkconfig --add mysql_3306 必须与/etc/init.d目录下的脚本名称一致
# chkconfig mysql_3306 on 把2345四种模式全部开启(3字符界面,5图形界面)
CentOS6及以前版本中,控制服务的开机启动的
7、MySQL GLIBC版本后续配置
第一步:更改管理员root账号的密码
- 方法1:
[root@node1 mysql_3306]# bin/mysqladmin -uroot password '123' -p
Enter password:输入刚刚初始化产生的临时密码
- 方法2
mysql> set password=password('456'); //未来版本将会弃用
或者
mysql> set password='123'; //推荐重置完成后,建议刷新权限,让其立即生效
mysql> flush privilges;
第二步:把mysql客户端命令添加到环境变量,以后随时可以访问
# echo 'export PATH=$PATH:/mysql_3306/bin' >> /etc/profile
# source /etc/profile设置完成后,我们可以在任意位置调用mysql客户端命令
# mysql -uroot -p
Enter password:123
第三步:手工定义MySQL的配置文件(非常重要)
# vim /mysql_3306/my.cnf
[mysqld]
basedir=/mysql_3306
datadir=/mysql_3306/data
socket=/tmp/mysql.sock
选项说明:
[mysqld] 代表针对服务器端进行配置
basedir 代表数据库的安装目录
datadir 代表数据目录,以后专门用于存放数据文件的(核心目录)
socket 代表套接字文件,专门为客户端与服务器端连接提供一个桥梁 ip+端口# service mysql_3306 restart
C(Client) === mysql命令 连(socket套接字)接 mysqld服务器端程序
第四步:安全配置(对于生产环境比较重要)
# mysql_secure_installation
一路Y,搞定!
其主要就是是否启动密码脚尖器、是否设置root密码、是否允许root远程连接、是否移除测试数据库等等一系列功能。
常见问题:如何关闭MySQL密码强度检测?
# vim /mysql_3306/my.cnf
[mysqld]
...
validate_password=OFF# service mysql_3306 restart
五、MySQL的源码编译安装
1、参考MySQL源码安装官方文档
官方文档:https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
源码安装三步曲:配置——>编译——>安装
㈠ 安装须知
- 软件包介绍
mysql-boost-5.7.31.tar.gz 可在任意发行版的Linux下安装
㈡ 安装需求
| 安装需求 | 具体配置 |
|---|---|
| 安装目录(basedir) | /mysql_3307 |
| 数据目录(datadir) | /mysql_3307/data |
| 端口号 | 3307 |
| socket文件位置 | $basedir/mysql.sock |
| 字符集 | utf8mb4 |
㈢ 了解配置选项
- 常用配置选项
| 配置选项 | 描述 | 默认值 | 建议值 |
|---|---|---|---|
| CMAKE_INSTALL_PREFIX | 安装基目录(basedir) | /usr/local/mysql | 根据需求 |
| MYSQL_DATADIR | 数据目录(datadir) | $basedir/data | 根据需求 |
| SYSCONFDIR | 默认配置文件my.cnf路径 | /etc | |
| MYSQL_TCP_PORT | TCP/IP端口 | 3306 | 非默认端口 |
| MYSQL_UNIX_ADDR | 套接字socket文件路径 | /tmp/mysql.sock | $basedir/ |
| DEFAULT_CHARSET | 默认字符集 | latin1 | utf8mb4 |
| DEFAULT_COLLATION | 默认校验规则 | latin1_swedish_ci | utf8mb4_general_ci |
| WITH_EXTRA_CHARSETS | 扩展字符集 | all | all |
| ENABLED_LOCAL_INFILE | 是否启用本地加载外部数据文件功能 | OFF | 建议开启 |
| WITH_SSL | SSL支持类型 | system | 建议显式指定 |
| WITH_BOOST | Boost库源代码的位置 | Boost库是构建MySQL所必需的,建议事先下载 |
- 存储引擎相关配置项
说明:
以下选项值均为布尔值,0或1;0代表不编译到服务器中,1代表编译,建议都静态编译到服务器中。
其他的存储引擎可以根据实际需求在安装时通过WITH_xxxx_STORAGE_ENGINE=1的方式编译到服务器中。
| 配置选项 | 描述 |
|---|---|
| WITH_INNOBASE_STORAGE_ENGINE | 将InnoDB存储引擎插件构建为静态模块编译到服务器中;建议编译到服务器中 |
| WITH_PARTITION_STORAGE_ENGINE | 是否支持分区 |
| WITH_FEDERATED_STORAGE_ENGINE | 本地数据库是否可以访问远程mysql数据 |
| WITH_BLACKHOLE_STORAGE_ENGINE | 黑洞存储引擎,接收数据,但不存储,直接丢弃 |
| WITH_MYISAM_STORAGE_ENGINE | 将MYISAM存储引擎静态编译到服务器中 |
2、MySQL的源码编译安装
建议大家在源码编译安装之前,先拍摄一个快照
第一步:安装MySQL编译需要用到的依赖库
# yum -y install ncurses-devel cmake libaio-devel openssl-devel
第二步:上传软件到服务器端并解压
# tar -xf mysql-boost-5.7.31.tar.gz
# cd mysql-5.7.31
第三步:配置(基于cmake进行配置)
# vim myconfig.sh
cmake . \
-DCMAKE_INSTALL_PREFIX=/mysql_3307 \
-DMYSQL_DATADIR=/mysql_3307/data \
-DMYSQL_TCP_PORT=3307 \
-DMYSQL_UNIX_ADDR=/mysql_3307/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DDEFAULT_COLLATION=utf8mb4_general_ci \
-DWITH_SSL=system \
-DWITH_BOOST=boost
# chmod +x myconfig.sh
# ./myconfig.sh选项说明:
-DCMAKE_INSTALL_PREFIX :安装路径
-DMYSQL_DATADIR :数据目录
-DMYSQL_TCP_PORT :端口号
-DMYSQL_UNIX_ADDR :套接字文件位置
第四步:编译安装
# make -j2 && make install
选项说明:
-j2 :代表同时开启多个线程共同实现编译操作
3、编译报错常见问题解析
问题1:没有boost导致安装失败

问题2:编译安装中途报错

解决方案:只能重新编译一下
# rm -f CMakeCache.txt
# make -j2 && make install
4、MySQL数据库的初始化
**注意:**进入到安装目录里/mysql_3307
# cd /mysql_3307
第一步:创建mysql-files目录
创建系统变量`secure_file_priv`限制导入导出目录并修改权限
# mkdir mysql-files
# chown -R mysql:mysql /mysql_3307
# chmod 750 mysql-files
第二步:数据库初始化操作
# bin/mysqld --initialize --user=mysql --basedir=/mysql_3307 --datadir=/mysql_3307/data
...
2020-08-24T11:07:37.621346Z 1 [Note] A temporary password is generated for root@localhost: O6.iHqrZgzz7
第三步:拷贝mysql.server脚本到/etc/init.d目录,然后启动数据库
# cp support-files/mysql.server /etc/init.d/mysql_3307
# service mysql_3307 start
启动异常的解决方案:

查看mysql.itcast.cn.err这个错误日志

出现以上问题的主要原因在于mysql这个用户对/mysql_3307目录没有写入文件的权限,写入mysql_socket套接字文件。
解决方案:
# chown -R mysql.mysql /mysql_3307
5、MySQL源码编译安装后的后续配置
第一步:编写MySQL配置文件,my.cnf
# vim /mysql_3307/my.cnf
[mysqld]
basedir=/mysql_3307
datadir=/mysql_3307/data
socket=/mysql_3307/mysql.sock# service mysql_3307 restart
第二步:设置管理员的密码
# bin/mysqladmin -uroot password '123' -p
Enter password:O6.iHqrZgzz7
第三步:安全设置
# bin/mysql_secure_installation
第四步:添加mysql_3307到开机启动项
# chkconfig --add mysql_3307
# chkconfig mysql_3307 on
六、MySQL常见问题解决方案
1、如何访问不同的数据库?
**方法一:**直接使用==对应的客户==端软件访问
访问5.7.31版本数据库:
[root@node1 ~]# /mysql_3306/bin/mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.31 MySQL Community Server (GPL)
方法二:定义别名的方式访问
[root@node1 ~]# alias mysql_3306="/mysql_3306/bin/mysql"
[root@node1 ~]# alias mysql_3307="/mysql_3307/bin/mysql"
[root@node1 ~]# mysql_3306 -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.31 MySQL Community Server (GPL)[root@node1 ~]# mysql_3307 -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.7.27 Source distribution
方法三:拷贝相应命令到PATH可以识别的路径下并重命名
[root@node1 ~]# unalias mysql_3306
[root@node1 ~]# unalias mysql_3307
+++++++++++++++++++++我是华丽分隔符+++++++++++++++++++++++++++
[root@node1 ~]# cp /mysql_3306/bin/mysql /usr/bin/mysql_3306
[root@node1 ~]# cp /mysql_3307/bin/mysql /usr/bin/mysql_3307
[root@node1 ~]# which mysql_3306
/usr/bin/mysql_3306
[root@node1 ~]# which mysql_3307
/usr/bin/mysql_3307
**深度思考:我们之所以能够连接到数据库里的本质**是什么?答:套接字
2、MySQL忘记密码的解决方案
**敲黑板:**找问题的解决方法很重要!
1、跳过授权表(通用)

㈠ 跳过授权表重启数据库(以GLIBC 3306为例)
① 关闭数据库
[root@node1 ~]# mysqladmin shutdown -p
Enter password:
② 跳过授权表启动
**友情提示:**启动过程可能会一波三折,冷静分析看报错,必能解决!
# /usr/local/mysql/bin/mysqld --skip-grant-tables --skip-networking=on --user=mysql &
㈡ 刷新授权表(重要)
# mysql -uroot -p
Enter password:什么都不要输入,直接回车即可mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
㈢ 修改密码
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass')
WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
修改密码后,使用jobs + kill命令,停止正在运行的mysqld进程。然后使用service启动服务
# jobs
# kill %1# service mysql_3306 start
_3307
/usr/bin/mysql_3307
**深度思考:**我们之所以能够连接到数据库里的**==本质==**是什么?答:套接字## 2、MySQL忘记密码的解决方案**敲黑板:**找问题的解决方法很重要!### 1、跳过授权表(通用)[外链图片转存中...(img-HZPUvN2g-1692341485245)]#### ㈠ 跳过授权表重启数据库(以GLIBC 3306为例)##### ① 关闭数据库```powershell
[root@node1 ~]# mysqladmin shutdown -p
Enter password:
② 跳过授权表启动
**友情提示:**启动过程可能会一波三折,冷静分析看报错,必能解决!
# /usr/local/mysql/bin/mysqld --skip-grant-tables --skip-networking=on --user=mysql &
㈡ 刷新授权表(重要)
# mysql -uroot -p
Enter password:什么都不要输入,直接回车即可mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
㈢ 修改密码
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPass')
WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
修改密码后,使用jobs + kill命令,停止正在运行的mysqld进程。然后使用service启动服务
# jobs
# kill %1# service mysql_3306 start
相关文章:
linux第三阶段--第三方软件(一)MySQL的概述和二进制安装(官网版)
MySQL介绍及安装 一、MySQL概述 DB2 POSTGRE-SQL 1、关系型数据库与非关系型数据库 RDBMS(relational database management system),既关系型数据库管理系统。 简单来说,关系型数据库,是指采用了二维表格来组织数…...
AD域控制器将辅域控制器角色提升为主域控制器
背景 域控服务器迁移,已将新机器添加为该域的辅域控制器。 主域控制器:test-dc-01 辅域控制器:test-dc-02 需求将主辅域的角色进行互换,test-dc-01更换为辅域,test-dc-02更换为主域。 操作步骤 方法1 命令行修改AD域…...
Docker案例分析:创建并运行一个Redis容器
步骤一:到DockerHub搜索Redis镜像 步骤二:查看Redis镜像文档中的帮助信息 步骤三:利用docker run命令运行一个Redis容器 可以看到第二行的命令是支持数据持久化的创建容器命令,但是我们使用的命令如下: docker run -…...
银河麒麟服务器v10 sp1 .Net6.0 上传文件错误 access to the path is denied
上一篇:银河麒麟服务器v10 sp1 部署.Net6.0 http https_csdn_aspnet的博客-CSDN博客 .NET 6之前,在Linux服务器上安装 libgdiplus 即可解决,libgdiplus是System.Drawing.Common原生端跨平台实现的主要提供者,是开源mono项目。地址…...
钝感力:项目经理的隐形盾牌
钝感力的定义 钝感力的起源和意义 钝感力,或者说对外部刺激的不敏感性,起源于我们的生存本能。在古代,人们面对各种危险和挑战,需要有一定的抗压能力,才能在恶劣环境中生存下来。这种能力使得我们的祖先能够在面对猛兽…...
成集云 | 乐享问题邀请同步企微提醒 | 解决方案
源系统成集云目标系统 方案介绍 腾讯乐享是腾讯公司开发的一款企业社区化知识管理平台,它提供了包括知识库、问答、课堂、考试、活动、投票和论坛等核心应用。这个平台凝聚了腾讯10年的管理经验,可以满足政府、企业和学校在知识管理、学习培训、文化建…...
【TypeScript】基础类型
安装 Node.js 环境 https://nodejs.org/en 终端中可以查到版本号即安装成功。 然后,终端执行npm i typescript -g安装 TypeScript 。 查到版本号即安装成功。 字符串类型 let str:string "Hello"; console.log(str);终端中先执行tsc --init…...
c++控制台双人格斗小游戏(测试版)
嗨嗨嗨,又是我! 我又来发博客啦! 最近太闲了,又做了个small游戏:小人-格斗(测试版) 上代码! 记得加上gamesio.h哦 #include<cstring> #include<conio.h> #include"gamesio.h" //宏定义一些常量(可更改) #define BULLETNUM 300//子弹最大数量 #defin…...
flink jira 提交开源bug
注册apache issue账号,并申请flink空间的权限后. 提问题/bug 查看已经提交的问题:...
华为杯”研究生数学建模竞赛2018年-【华为杯】D题:基于卫星高度计海面高度异常资料 获取潮汐调和常数方法及应用(续)
目录 5.3 沿轨道各分潮的潮汐调和常数的正压潮和内潮的分离 5.3.1 数据处理 5.3.2 模型准备...
HTTP连接管理
基础知识:非持久连接 HTTP初始时1.0版本在浏览器每一次向服务器请求完资源都会立即断开TCP连接,如果想要请求多个资源,就必须建立多个连接,这就导致了服务端和客户端维护连接的开销。 例如:一个网页中包含文字资源也包…...
漏洞指北-VulFocus靶场专栏-初级02
漏洞指北-VulFocus靶场02-初级 初级005 🌸phpunit 远程代码执行 (CVE-2017-9841)🌸step1:进入漏洞页step2: burpsuite 抓包,等待请求页,获得flag 初级006 🌸splunk 信息泄露 (CVE-2018-11409&am…...
无论是小说、公文还是新闻稿,爱校对都是你的最佳选择
在这个数字化的时代,写作已经渗透到我们生活的方方面面。从小说家到政府官员,再到新闻记者,每个人都需要确保他们的文本内容无瑕疵、逻辑清晰。这就是“爱校对”进入舞台的地方。它不仅仅是一个校对工具,更是每个写作者都不可或缺…...
MySQL数据表的损坏及容灾解决方案
引言 在互联网应用中,MySQL是最常用的关系型数据库之一。然而,数据表的损坏可能会导致数据丢失或无法正常访问,给业务运营带来严重影响。本文将讨论MySQL数据表容易损坏的情况,并提供相应的容灾解决方案。 推荐阅读 AI文本 OCR…...
【仿写tomcat】二、扫描java文件,获取带有@WebServlet注解的类
tomcat仿写 项目结构扫描文件servlet注解map容器servlet工具类启动类调用 项目结构 扫描文件之前当然要确定一下项目结构了,我这里的方案是tomcat和项目同级 项目的话就仿照我们平时使用的结构就好了,我们规定所有的静态资源文件都在webApp目录下存放…...
pytorch2.0.1 安装部署(cpu+gpu) linux+windows
官网打开可能较慢,耐心等待 pytorch官网 以下操作在默认网络环境即可使用,2023年8月20日更新 一、说明和前期准备 1.pytorch是一个和tensorflow类似的框架 如果需要安装tensorflow,可以参考: tensorflow 1,2 cpugpu…...
Java数据结构学习和源码阅读(线性数据结构)
线性数据结构 链表 LinkList 链表的数据结构 一组由节点组成的数据结构,每个元素指向下一个元素,是线性序列。 最简单的链表结构: 数据指针(存放执行下一个节点的指针) 不适合的场景: 需要循环遍历将…...
华为网络篇 多区域OSPF-32
难度2复杂度2 目录 一、实验原理 二、实验拓扑 三、实验步骤 四、实验过程 总结 一、实验原理 OSPF是一种具有区域概念的路由协议,为什么需要分区域?像RIP那样都在一个区域配置也不多这样简单点不是更好吗?OSPF它是一种功能十分强大的IG…...
【HCIP】03.VLAN高级技术
Eth-trunk 链路聚合,定义出一个逻辑聚合口,把物理接口和逻辑接口关联,此时在STP中,会把多个物理接口看成一个逻辑接口,此时不会出现环路。 接口负载分担(逐包|逐流) 基于IP的散列算法能保证包…...
WebSocket服务端数据推送及心跳机制(Spring Boot + VUE)
一、WebSocket简介 HTML5规范在传统的web交互基础上为我们带来了众多的新特性,随着web技术被广泛用于web APP的开发,这些新特性得以推广和使用,而websocket作为一种新的web通信技术具有巨大意义。WebSocket是HTML5新增的协议,它的…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
深入浅出:JavaScript 中的 `window.crypto.getRandomValues()` 方法
深入浅出:JavaScript 中的 window.crypto.getRandomValues() 方法 在现代 Web 开发中,随机数的生成看似简单,却隐藏着许多玄机。无论是生成密码、加密密钥,还是创建安全令牌,随机数的质量直接关系到系统的安全性。Jav…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
codeforces C. Cool Partition
目录 题目简述: 思路: 总代码: https://codeforces.com/contest/2117/problem/C 题目简述: 给定一个整数数组,现要求你对数组进行分割,但需满足条件:前一个子数组中的值必须在后一个子数组中…...
论文笔记:Large Language Models for Next Point-of-Interest Recommendation
SIGIR 2024 1 intro 传统的基于数值的POI推荐方法在处理上下文信息时存在两个主要限制 需要将异构的LBSN数据转换为数字,这可能导致上下文信息的固有含义丢失仅依赖于统计和人为设计来理解上下文信息,缺乏对上下文信息提供的语义概念的理解 ——>使用…...
