linux CentOs 安装 mysql8.0.30

news2024/10/6 6:46:22

心酸历程。。。
网上的各种教程都有各种bug,安了三个小时终于安好。现在奉上我的宝典秘籍。
第一步,去mysql官网下载,然后将下载的tar包放到linux里面,最好专门创建一个目录来存放,我放到了/usr/local/src的mysql目录下了,mysql这个目录是我自己创建的。

在linux里面解压
我下载的是tar包,第一步是解压这个tar包

tar -xvf mysql-8.0.30-linux-glibc2.12-x86_64.tar

tar包解压出来就是tar.xz包

tar -xvJf mysql-8.0.23-linux-glibc2.12-x86_64.tar.xz 

给他改个名字,好看点

mv mysql-8.0.30-linux-glibc2.12-x86_64 mysql-8.0.30

在mysql-8.0.30的目录下创建data文件,用来放数据

mkdir data

分别创建用户组以及用户和密码(如果提示已存在说明之前有创建过了)

groupadd mysql
useradd -g mysql mysql

让mysql:mysql管理mysql的文件

chown -R mysql.mysql /usr/local/src/mysql/mysql-8.0.30

修改data权限,让他可以写入执行数据

chmod 750 /usr/local/src/mysql/mysql-8.0.30/data -R

配置环境变量

vim /etc/profile
export PATH=$PATH:/usr/local/src/mysql/mysql-8.0.30/bin:/usr/local/src/mysql/mysql-8.0.30/lib

这两个路径就是mysql的路径/bin,mysql路径的/lib,大家不要直接照搬啊,看着自己的mysql路径,可以在mysql包下通过pwd获取当前路径,然后复制粘贴上去。
编辑my.cnf文件

vi /etc/my.cnf

直接粘贴下面语句就行,根据自己的实际情况改动安装根目录和数据文件所在位置,其他的不需要改动。


#服务端口号 默认3306
port = 3306
# 启动mysql服务进程的用户
user = mysql
##########################################################################################################
# 安装目录相关
# mysql安装根目录
basedir = /usr/local/src/mysql/mysql8.0.30/

# mysql数据文件所在位置
datadir = /usr/local/src/mysql/mysql8.0.30/data/

# 临时目录 比如load data infile会用到,一般都是使用/tmp
tmpdir  = /tmp
#数据库默认字符集,主流字符集支持一些特殊表情符号(特殊表情符占用4个字节)
character-set-server = utf8mb4

#数据库字符集对应一些排序等规则,注意要和character-set-server对应
collation-server = utf8mb4_unicode_ci
#设置client连接mysql时的字符集,防止乱码
init_connect='SET NAMES utf8mb4'
[client]
socket=/var/lib/mysql/mysql.sock
        

复制 mysql.server 文件,在//usr/local/src/mysql/mysql8.0.30/目录下执行

cp -a ./support-files/mysql.server /etc/init.d/mysql 
cp -a ./support-files/mysql.server /etc/init.d/mysqld

给赋值的文件赋予权限

chown 777 /etc/my.cnf
chmod +x /etc/init.d/mysql
chmod +x /etc/init.d/mysqld

检查一下/var/lib/mysql是否存在,否则进行创建,这里主要是防止连接不上mysql.sock,套接字,这里的套接字的路径和my.cnf里面的socket路径必须一样。

mkdir /var/lib/mysql 

赋予权限

chown -R mysql:mysql /var/lib/mysql/ 

初始化mysql
使用mysql的 mysqld 命令初始化数据库的基本信息。切换到mysql-5.7.18/bin目录下执行。

报错点1:注意这里还有一个问题就是我们需要用mysql用户来初始化mysql 所有我们要先从root用户变成mysql用户,要不然会报错!!!!

su mysql

命令:在/usr/local/src/mysql/mysql8.0.30/bin目录下执行

./mysqld --initialize --user=mysql --datadir=/usr/local/src/mysql/mysql8.0.30/data --basedir=/usr/local/src/mysql/mysql8.0.30 --console

该命令执行后,会生成一个临时的mysql数据库root用户的密码,请先拷贝出来记住,后续第一次登录mysql需要使用
在这里插入图片描述

报错点2,说data文件不安全或者说data文件里面存在数据,那么就把data里面的数据删掉就好了

 rm -rf /usr/local/src/mysql/mysql8.0.30/data/*

mysql-5.7.18/bin目录下执行命令:./mysqld_safe &(其中&符号表示后台启动),输入命令后按Enter。
启动数据库,有SUCCESS字眼说明MySQL安装完成

service mysql start 

ps:
如果发现启动失败,可以先查看data里面的mysql.log,如果有提示3306这样的字样,第一个想到的应该是端口被占用,
使用lsof -i:端口号,查看是哪个PID(进程号)占用了该端口,然后使用kill -9 PID(进程号)杀掉进程,重新执行service mysql start
确认msyql是否启动,查看进程 ,使用ps -ef | grep mysql
在这里插入图片描述
客户端登录mysql
登录进入mysql,bin目录下执行命令:

./mysql -uroot -p

-u表示使用root用户登录系统,使用之前生成的密码。
-p表示使用密码登录
root用户密码是临时密码,要修改才能使用。
执行sql语句 show databases; 第一次使用将会提示修改mysql的root用户密码:
在这里插入图片描述修改密码

alter user 'root'@'localhost' identified by '新密码';

授权远程访问
授权远程访问,在没有授权之前只能在本机访问msyql,远程授权就是让其他计算机通过网络访问mysql(这样远程客户端才能访问)。

CREATE USER 'root'@'%' IDENTIFIED BY '新密码';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

授权命令:grant
语法:grant all privileges on . to root@‘%’ identified by ‘yf123’;
参数:
其中*.* 的第一个表示所有数据库名,第二个表示所有的数据库表;
root@‘%’ 中的root表示用户名,%表示ip地址,%也可以指定具体的ip地址,比如root@localhost,root@192.168.235.130等。
执行授权命令:grant all privileges on . to root@‘%’ identified by ‘yf123’;

关闭防火墙:systemctl stop firewalld
在这里插入图片描述
远程连接数据库:
点开你的mysql->新建连接->测试连接

报错点3连接不上,报错

在这里插入图片描述

进入MySQL的bin目录,然后输入mysql -u root -p,输入密码,登录成功
执行SQL查询用户信息

select host,user,plugin,authentication_string from mysql.user;

可以看到他们的加密方式是caching,这个加密方法和mysql8.0.30不匹配。因此需要改变他的加密方式。
在这里插入图片描述
改变加密方式

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密码';

我是因为有两个root,所以我这行代码需要执行两次,并且刷新权限,才能将两个root账号的加密方式全部改过来。
刷新权限

FLUSH PRIVILEGES;

再次连接,嘿嘿,成功!
在这里插入图片描述
关闭mysql服务
bin目录下执行:
./mysqladmin -uroot -p shutdown输入密码关闭

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/510097.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于51单片机的简易电子秤

首先看看题目要求: 1.方案论证 (1)压力传感器的论证与选择 方案一:采用惠更斯电桥,当电阻应变片承受载荷产生变形时,其阻值将发生变化。从而使电桥失去平衡,产生相应的差动信号,但…

Jenkins入门系列之Gitlab账号登录

目录 背景步骤1. 安装插件2. Gitlab 配置3. Jenkins 配置4. 验证 背景 版本 Jenkins Version:Jenkins 2.403Gitlab Version: Gitlab 15.6部署环境:群晖NAS Docker 部署JenkinsGitlab Jenkins 默认使用的是自带的数据库,支持LDAP&#xff0…

【C++】-类和对象之初始化列表(explicit的简单介绍)(下)

💖作者:小树苗渴望变成参天大树 ❤️‍🩹作者宣言:认真写好每一篇博客 💨作者gitee:gitee 💞作者专栏:C语言,数据结构初阶,Linux,C 文章目录 前言 前言 经过前面的好几篇博客,大家应…

SpringSecurity自定义实现手机短信登录

SpringSecurity自定义登录验证-手机验证码登录 其实实现原理上跟账号密码登录一样的 1、自定义短信验证Token 定义一个仅使用手机号验证权限的鉴权Token,SpringSecurity原生的UsernamePasswordAuthenticationToken是使用username和password,如下图 pr…

向量时钟算法

向量时钟不仅同步本进程的时钟值,而且还同步已知的其他进程时钟值 分布式系统中每个进程Pi保存一个本地逻辑时钟向量值VCi,VCi(j)代表进程Pi知道的进程Pj的本地逻辑时钟值 初始化VCi向量为[0,…]进程Pi每发生一次事件,VCi[i]加一进程Pi给进…

应付模块无法关账问题 APP-AR-11332 您必须在关闭此期之前过账其中的所有事务处理

问题描述 AR关账时遇到了这个问题,根本原因是,因为用户录入另一个贷项的发票,做过核销,后来又取消了核销,未创建会计分类,未传送总,不想要这个贷项发票了,前台删除不了,…

经验分享,api 接口设计原则有这几条

结合我多年在 API 行业摸爬滚打的经验,我总结了一下,API 接口设计原则有这几条: 接口设计应该简单易用,易于理解和使用; 接口设计应该支持多种格式,如JSON、XML等; 接口设计应该支持多种请求方…

渲染速度慢,使用云渲染会快多少?

设计师在使用软件制作效果图和动画师在制作动画时,其中有一个比较关键的环节就是渲染成像,渲染的效率主要跟使用的电脑显卡或CPU性能有关,如果性能太低,渲染的速度会很慢,拉长了项目整体的交付周期,云渲染速…

Vite + Vue3 实现前端项目工程化

Vue3 发布至今,周边的生态、技术方案已足够成熟,个人认为新项目是时候切换到 Vite Vue3 了。今天就给大家操作一下这种技术方案实现前端工程化。 1. 初始化项目 通过官方脚手架初始化项目 第一种方式,这是使用vite命令创建,这种…

FM33A048B SPI1/2

概述 芯片的2 个SPI 接口模块SPI1 和SPI2,可配置为主设备或从设备,实现与外部的SPI 通信。 特点: ⚫ 全双工3线串行同步收发 ⚫ 2路独立通道 ⚫ 主从模式 ⚫ 可编程时钟极性和相位 ⚫ 可编程比特速率 ⚫ 从模式最大频率为FAHBCLK/2 ⚫ 传输结…

Hello算法——笔记

文章目录 1 引言算法数据结构算法和数据结构的关系 2 复杂度分析时间复杂度空间复杂度 3 数据结构数据与内存数据结构分类 4 数组与链表 参考资料 1 引言 算法 算法是一组用于解决特定问题或执行特定任务的明确定义的计算步骤或指令集合。算法可以被视为一种解决问题的方法或…

【iOS】--手势操作

文章目录 UIGestureRecognizer 的继承关系: 使用手势步骤UIPanGestureRecognizer(拖动)UIPinchGestureRecognizer(拖动)UIRotationGestureRecognizer(旋转)UITapGestureRecognizer(点按&#xf…

浅谈造纸配电室环境监控系统的应用案例

摘要:智能配电室环境监控系统可实现自动巡检、自动预警等功能,减少人员到现场巡视次数,能及早发现设备的潜在风险,迅速检测故障,节约维护保养时长,为配电生产检修、运行、各业务的标准化、规范化管理提供有…

【Flowable】Flowable候选人和候选人组

在流程定义中在任务结点的 assignee 固定设置任务负责人,在流程定义时将参与者固定设置在.bpmn 文件中,如果临时任务负责人变更则需要修改流程定义,系统可扩展性差。针对这种情况可以给任务设置多个候选人或者候选人组,可以从候选…

IntelliJ IDEA编辑模板变量详解(Edit Template Variables)

函数描述annotated(“annotation qname”)使用驻留在指定位置的注释创建类型符号。 例如,请参见迭代组中的活动模板。anonymousSuper()为Kotlin对象表达式建议一个超类型。arrayVariable()建议当前作用域中适用的所有数组变量。 例如,请参见迭代组中的活…

ACM - DP习题集(word里面的一小部分题集)

DP 一、经典问题1、编辑距离2、扔鸡蛋问题3、整数背包4、最大独立集5、最长公共子序列6、最长公共递增子序列7、最长公共子串(ing)8、最长上升子序列9、最长回文子序列10、最长回文子串(ing)11、最长不重复子字符串(in…

OpenGL教程中矩阵Matrix的介绍

变换 原文Transformations作者JoeyDeVries翻译Django, Krasjet, BLumia校对暂未校对 尽管我们现在已经知道了如何创建一个物体、着色、加入纹理,给它们一些细节的表现,但因为它们都还是静态的物体,仍是不够有趣。我们可以尝试着在每一帧改变…

Python 操作 Excel,如何又快又好?

➤数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件。因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道。Python处理Excel 常用的系列库有:xlrd、xlwt、xlutils、openpyxl ◈xlrd - 用于读取 Exce…

import一个“太极”库,让Python代码提速100倍!

众所周知,Python的简单和易读性是靠牺牲性能为代价的—— 尤其是在计算密集的情况下,比如多重for循环。 不过现在,大佬胡渊鸣说了: 只需import 一个叫做“Taichi”的库,就可以把代码速度提升100倍! 不信…

0-1规划在编程问题中的应用(UnityC#脚本/折返约瑟夫/OpenGL机器人摆臂循环)

一、0-1规划的定义 百度百科的解释:0-1规划是决策变量仅取值0或1的一类特殊的整数规划。在处理经济管理中某些规划问题时,若决策变量采用 0-1变量即逻辑变量,可把本来需要分别各种情况加以讨论的问题统一在一个问题中讨论。 如上面所说&…