【Mysql】安装和基础环境配置

news2024/12/26 23:22:51

本文首发于 慕雪的寒舍

在本地安装mysql,以mariadb为例。

所有命令都需要在root下面执行or使用sudo

系统 CentOS 8

1.安装mariadb开发包

yum install -y mariadb
yum install -y mariadb-server
yum install -y mariadb-devel

2.修改配置文件中的编码

为了保证对中文的支持,我们需要修改几个配置文件。他们都在如下目录中

$ ls /etc/my.cnf.d/
auth_gssapi.cnf  client.cnf  enable_encryption.preset  mariadb-server.cnf  mysql-clients.cnf

需要修改的是如下3个,修改之前,建议使用cp命令进行备份,避免修改错了无法复原。

/etc/my.cnf.d/client.cnf
/etc/my.cnf.d/mysql-clients.cnf
/etc/my.cnf.d/mariadb-server.cnf

我的已经是修改好的了,需要修改的配置看注释就ok

$ cat /etc/my.cnf.d/client.cnf
#
# These two groups are read by the client library
# Use it for options that affect all clients, but not the server
#


[client]
# 新增下边一行配置,设置客户端默认字符集为utf8
default-character-set = utf8

# This group is not read by mysql client library,
# If you use the same .cnf file for MySQL and MariaDB,
# use it for MariaDB-only client options
[client-mariadb]
$ cat /etc/my.cnf.d/mysql-clients.cnf
#
# These groups are read by MariaDB command-line tools
# Use it for options that affect only one utility
#

[mysql]
# 新增字符配置
default-character-set = utf8

[mysql_upgrade]
$ cat /etc/my.cnf.d/mariadb-server.cnf
#
# These groups are read by MariaDB server.
# Use it for options that only the server (but not clients) should see
#
# See the examples of server my.cnf files in /usr/share/mysql/
#

# this is read by the standalone daemon and embedded servers
[server]

# this is only for the mysqld standalone daemon
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mysqld/mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mariadb/mariadb.log
pid-file=/run/mariadb/mariadb.pid
# 新增以下字符集的配置
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
sql-mode = TRADITIONAL

3.测试

3.1 启动/关闭

 systemctl start mariadb

看看状态

 systemctl status mariadb

显示如下,那就是正常运行中的

● mariadb.service - MariaDB 10.3 database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2023-04-04 14:10:00 CST; 2 days ago
     Docs: man:mysqld(8)
           https://mariadb.com/kb/en/library/systemd/
  Process: 633453 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
  Process: 633289 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mariadb.service (code=exited, status=0/SUCCESS)
  Process: 633265 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
 Main PID: 633422 (mysqld)
   Status: "Taking your SQL requests now..."
    Tasks: 31 (limit: 75691)
   Memory: 67.4M
   CGroup: /system.slice/mariadb.service
           └─633422 /usr/libexec/mysqld --basedir=/usr

image-20230406190224737

用ps命令也能看到相关的进程

$ ps jax | grep mysql
      1  633422  633422  633422 ?             -1 Ssl     27   4:10 /usr/libexec/mysqld --basedir=/usr
 625302  634104  634104  625302 pts/48    634104 S+    1000   0:00 mysql -uroot
 642521  642555  642554  642521 pts/51    642554 S+    1000   0:00 grep --color=auto mysql

如果想关闭,使用如下命令即可

systemctl stop mariadb

3.2 进入mysql命令行

 mysql -uroot

会显示出如下信息,包括mariadb的版本

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 11
Server version: 10.3.28-MariaDB MariaDB Server

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

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

MariaDB [(none)]>

3.3 看看字符编码是否修改成功

输入如下命令 (记得要输入末尾的分号)

show variables like "%chara%";

看看是否都配置为了utf-8,如下图,除了filesystem是二进制,其他都是utf8,那就是ok的

修改之前的是这样的

image-20230407165807546

修改后

Snipaste_2023-04-04_14-12-41

到这里,就ok菈!

3.4 端口

mysql服务的默认端口为3306:::代表它是采用ipv6协议在本地进行访问的。但这不影响我们的使用

image-20230408142003050

4.彻底卸载

有的时候,一个环境中已有mysql,但不是我们需要的版本。就需要将其删除后重新安装新的mysql。

rpm -qa | grep mysql
rpm -qa | grep mariadb

使用这两个命令,可以查看当前系统中安装的mysql(mariadb)的包

[root@1c2261732150:~]# rpm -qa | grep mysql
[root@1c2261732150:~]# rpm -qa | grep mariadb
mariadb-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
mariadb-server-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
mariadb-common-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
mariadb-errmsg-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
mariadb-connector-c-3.1.11-2.el8_3.x86_64
mariadb-backup-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
mariadb-server-utils-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
mariadb-devel-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
mariadb-connector-c-config-3.1.11-2.el8_3.noarch
mariadb-gssapi-server-10.3.28-1.module_el8.3.0+757+d382997d.x86_64
mariadb-connector-c-devel-3.1.11-2.el8_3.x86_64

可以看到,我的系统中安装的是mariadb(而不是mysql)

这时候就可以用一条命令,快速进行批量卸载

rpm -qa | grep mariadb | xargs yum -y remove

这条命令中xargs的作用就是把前面这个grep命令的结果,按行喂给yum进行删除。

删除之后,再次执行。

rpm -qa | grep mariadb

如果没有软件,那就是卸载完毕了!👌👌

[root@1c2261732150:~/package]# rpm -qa | grep mariadb 
[root@1c2261732150:~/package]# 

注意,卸载mysql并不会连带删除数据文件

5.安装特定版本的

5.1 查看系统版本

$ cat /etc/system-release
CentOS Linux release 8.5.2111

当前我使用的系统为CentOS 8.5,使用yum安装的mariadb的版本比较高

# mysql --version
mysql  Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1

假设我需要一个老版本的mysql,就需要去安装特定的rpm版本

5.2 获取yum源

http://repo.mysql.com/

找到el8后缀的包,el指代的就是CentOS

mysql80-community-release-el8-3.noarch.rpm

如上,就是一个mysql 8.0版本的CentOS8的rpm源。

在很多教程中,使用的都是5.7版本的mysql,可惜CentOS8已经不支持这个旧版本了(找不到对应的mysql57的包)

5.3 安装yum源

可以使用windows下载了rpm文件后,上传到服务器中。或者用如下命令在linux内部下载。

如下目录是我们系统源的路径,一般情况下,内部不会带有和mysql相关的源。

ls -al /etc/yum.repos.d/ 
total 92
drwxr-xr-x 1 root root 4096 Apr  6 19:14 .
drwxr-xr-x 1 root root 4096 Apr  6 19:14 ..
-rw-r--r-- 1 root root 2590 Feb 24 08:08 CentOS-Base.repo
-rw-r--r-- 1 root root  966 Feb 24 08:00 CentOS-Linux-AppStream.repo
-rw-r--r-- 1 root root  710 Feb 24 07:56 CentOS-Linux-BaseOS.repo
-rw-r--r-- 1 root root 1136 Feb 24 07:56 CentOS-Linux-ContinuousRelease.repo
-rw-r--r-- 1 root root  318 Feb 24 07:56 CentOS-Linux-Debuginfo.repo
-rw-r--r-- 1 root root  738 Feb 24 07:56 CentOS-Linux-Devel.repo
-rw-r--r-- 1 root root  710 Feb 24 07:56 CentOS-Linux-Extras.repo
-rw-r--r-- 1 root root  725 Feb 24 07:56 CentOS-Linux-FastTrack.repo
-rw-r--r-- 1 root root  746 Feb 24 07:56 CentOS-Linux-HighAvailability.repo
-rw-r--r-- 1 root root  693 Feb 24 07:56 CentOS-Linux-Media.repo
-rw-r--r-- 1 root root  712 Feb 24 07:56 CentOS-Linux-Plus.repo
-rw-r--r-- 1 root root  730 Feb 24 07:56 CentOS-Linux-PowerTools.repo
-rw-r--r-- 1 root root 1124 Feb 24 07:56 CentOS-Linux-Sources.repo
-rw-r--r-- 1 root root    0 Feb 24 08:05 epel-8.repo
-rw-r--r-- 1 root root 1698 Oct  4  2022 epel-modular.repo
-rw-r--r-- 1 root root 1332 Oct  4  2022 epel.repo
-rw-r--r-- 1 root root 1417 Jun  8  2021 epel.repo.rpmnew
-rw-r--r-- 1 root root 2318 Feb 24 08:08 epel.repo.rpmsave
-rw-r--r-- 1 root root 1797 Oct  4  2022 epel-testing-modular.repo
-rw-r--r-- 1 root root 1431 Oct  4  2022 epel-testing.repo
-rw-r--r-- 1 root root  164 Feb 27 12:21 vscode.repo

将数据传到云服务器后,使用如下命令,进行源安装

rpm -Uvh mysql80-community-release-el8-3.noarch.rpm

输出如下

warning: mysql80-community-release-el8-3.noarch.rpm: Header V4 RSA/SHA256 Signature, key ID 3a79bd29: NOKEY
Verifying...                          ################################# [100%]
warning: Unable to get systemd shutdown inhibition lock: Unit systemd-logind.service is masked.
Preparing...                          ################################# [100%]
Updating / installing...
   1:mysql80-community-release-el8-3  ################################# [100%]

安装完毕,再次查看yum源路径,可以看到比原来多了两个mysql的包

# ls -al /etc/yum.repos.d/
total 100
drwxr-xr-x 1 root root 4096 Apr  7 16:12 .
drwxr-xr-x 1 root root 4096 Apr  6 19:14 ..
-rw-r--r-- 1 root root 2590 Feb 24 08:08 CentOS-Base.repo
-rw-r--r-- 1 root root  966 Feb 24 08:00 CentOS-Linux-AppStream.repo
-rw-r--r-- 1 root root  710 Feb 24 07:56 CentOS-Linux-BaseOS.repo
-rw-r--r-- 1 root root 1136 Feb 24 07:56 CentOS-Linux-ContinuousRelease.repo
-rw-r--r-- 1 root root  318 Feb 24 07:56 CentOS-Linux-Debuginfo.repo
-rw-r--r-- 1 root root  738 Feb 24 07:56 CentOS-Linux-Devel.repo
-rw-r--r-- 1 root root  710 Feb 24 07:56 CentOS-Linux-Extras.repo
-rw-r--r-- 1 root root  725 Feb 24 07:56 CentOS-Linux-FastTrack.repo
-rw-r--r-- 1 root root  746 Feb 24 07:56 CentOS-Linux-HighAvailability.repo
-rw-r--r-- 1 root root  693 Feb 24 07:56 CentOS-Linux-Media.repo
-rw-r--r-- 1 root root  712 Feb 24 07:56 CentOS-Linux-Plus.repo
-rw-r--r-- 1 root root  730 Feb 24 07:56 CentOS-Linux-PowerTools.repo
-rw-r--r-- 1 root root 1124 Feb 24 07:56 CentOS-Linux-Sources.repo
-rw-r--r-- 1 root root    0 Feb 24 08:05 epel-8.repo
-rw-r--r-- 1 root root 1698 Oct  4  2022 epel-modular.repo
-rw-r--r-- 1 root root 1332 Oct  4  2022 epel.repo
-rw-r--r-- 1 root root 1417 Jun  8  2021 epel.repo.rpmnew
-rw-r--r-- 1 root root 2318 Feb 24 08:08 epel.repo.rpmsave
-rw-r--r-- 1 root root 1797 Oct  4  2022 epel-testing-modular.repo
-rw-r--r-- 1 root root 1431 Oct  4  2022 epel-testing.repo
-rw-r--r-- 1 root root 1265 Jan 10  2022 mysql-community.repo
-rw-r--r-- 1 root root 1321 Jan 10  2022 mysql-community-source.repo
-rw-r--r-- 1 root root  164 Feb 27 12:21 vscode.repo

这时候,yum源就已经安装成功了

yum list | grep mysql

执行后,可以看到,列在最前面的就是el8-3,即为刚刚我们添加的的yum源中的mysql版本

Repository AppStream is listed more than once in the configuration
Repository extras is listed more than once in the configuration
mysql80-community-release.noarch                                  el8-3                                                  @System                   
anope-mysql.x86_64                                                2.0.12-1.el8                                           epel                      
ansible-collection-community-mysql.noarch                         3.5.1-1.el8                                            epel                      
apr-util-mysql.x86_64                                             1.6.1-6.el8                                            AppStream

image-20230407161955819

5.4 卸载旧版本的

如果需要安装新版本的,那就需要依照第四步的操作,彻底卸载旧版本的mysql

5.5 安装指定版本

此时我们指定mysql进行安装,就肯定能安装到刚刚添加的mysql8.0版本

yum install -y mysql
yum install -y mysql-server
yum install -y mysql-devel

image-20230407162538787

可以看到,版本就是8.0的,不再是之前安装的Ver 15.1

$ mysql --version
mysql  Ver 8.0.26 for Linux on x86_64 (Source distribution)

共安装了下面的这些包

# rpm -qa | grep mysql
mysql-8.0.26-1.module_el8.4.0+915+de215114.x86_64
mysql-errmsg-8.0.26-1.module_el8.4.0+915+de215114.x86_64
mysql-server-8.0.26-1.module_el8.4.0+915+de215114.x86_64
mysql-devel-8.0.26-1.module_el8.4.0+915+de215114.x86_64
mysql-common-8.0.26-1.module_el8.4.0+915+de215114.x86_64
mysql80-community-release-el8-4.noarch
mysql-libs-8.0.26-1.module_el8.4.0+915+de215114.x86_64
# rpm -qa | grep mariadb
mariadb-connector-c-config-3.1.11-2.el8_3.noarch

5.6 启动报错(未解决)

但是这次启动的时候,却遇到了下面的报错

# systemctl start mysqld
Job for mysqld.service failed because the control process exited with error code.
See "systemctl status mysqld.service" and "journalctl -xe" for details.

查看报错信息也看不出个所以然

# systemctl status mysqld.service
● mysqld.service - MySQL 8.0 database server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Fri 2023-04-07 16:39:51 CST; 7s ago
  Process: 648073 ExecStopPost=/usr/libexec/mysql-wait-stop (code=exited, status=0/SUCCESS)
  Process: 648059 ExecStart=/usr/libexec/mysqld --basedir=/usr (code=exited, status=1/FAILURE)
  Process: 648023 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
  Process: 647999 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
 Main PID: 648059 (code=exited, status=1/FAILURE)
   Status: "Data Dictionary upgrade from MySQL 5.7 in progress"

Apr 07 16:39:50 1c2261732150 systemd[1]: Starting MySQL 8.0 database server...
Apr 07 16:39:51 1c2261732150 systemd[1]: mysqld.service: Main process exited, code=exited, status=1/FAILURE
Apr 07 16:39:51 1c2261732150 systemd[1]: mysqld.service: Failed with result 'exit-code'.
Apr 07 16:39:51 1c2261732150 systemd[1]: Failed to start MySQL 8.0 database server.

百度了一下,这个问题是因为mysql的路径权限不足

https://blog.csdn.net/Shockang/article/details/118061120

https://blog.csdn.net/weixin_44198965/article/details/104145043

但是我修改了之后还是没有用,百度了另外几个操作,都没有办法正常启动mysqld,那能咋办,放弃了。

用回最开始安装的mariadb了😥

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

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

相关文章

亚马逊美国站 儿童陀螺玩具CPC认证 陀螺的详细介绍 CPC认证方案的流程

什么是陀螺陀螺指的是绕一个支点高速转动的刚体。陀螺是中国民间最早的娱乐工具之一.形状上半部分为圆形,下方尖锐。从前多用木头制成,现代多为塑料或铁制。玩时可用绳子缠绕,用力抽绳,使直立旋转。或利用发条的弹力旋转。传统古陀…

多通道高通量实时处理单元详细方案设计报告

前端时间,做了一个项目,编写了相关的技术方案设计报告,项目的技术细节虽不能透漏,但这个设计报告做的很好,在此,贡献出来,给有相关需求的同事们做个参考,整个报告84页,2万…

JMeter 测试笔记(二):组件及运行原理

说组件之前,我们先来看一下JMeter的结构图,如下图,把JMeter拆解为三个维度,X空间5个维度,Y空间2个维度,Z空间1个维度。 介绍 X1~X5是负载模拟的整个过程,Y1是负载模拟部分,这部分主…

数字签名和数字证书的原理解读(图文)

数字签名和数字证书的区别是什么?数字证书是由权威机构CA证书授权中心发行的,能提供在Internet上进行身份验证的一种权威性电子文档。而数字签名是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数…

类型检查:时常被忽略的编译器组件

原文来自微信公众号“编程语言Lab”:类型检查:时常被忽略的编译器组件 搜索关注“编程语言Lab”公众号(HW-PLLab)获取更多技术内容! 欢迎加入 编程语言社区 SIG-类型系统 参与交流讨论(加入方式&#xff1a…

【基于容器的部署、扩展和管理】3.3 自动化扩展和负载均衡

往期回顾: 第一章:【云原生概念和技术】 第二章:【容器化应用程序设计和开发】 第三章:【3.1 容器编排系统和Kubernetes集群的构建】 第三章:【3.2 基于容器的应用程序部署和升级】 自动化扩展和负载均衡 3.3 自动…

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 系统评估2

ChatGPT 使用 拓展资料:吴恩达大咖 Building Systems with the ChatGPT API 系统评估2 运行端到端系统以回答用户查询 import time customer_msg = f""" tell me about the smartx pro phone and the fotosnap camera, the dslr one. Also, what TVs or TV r…

HOOPS助力AVEVA数字化转型:支持多种3D模型格式转换!

行业: 电力和公用事业、化工、造船、能源、采矿业 挑战: 创建大规模复杂资产的客户需要汇集多种类型的数据,以支持初始设计和创建强大的数字双胞胎;现有版本的产品只支持半打CAD格式;有限的内部开发资源限制了增加对新…

SpringBoot:SpringBoot配置解读 ③

一、先讲思想 ①. 我们说SpringBoot方向是一直致力于快速应用开发领域的蓬勃发展。 ②. 应用层面: 简化配置,默认配置,约定配置是它的具体体现。 二、YML配置 ①. 这是一种层级结构更清晰的一种配置文件格式。 三、启动依赖配置树 官网的启…

05. Web大前端时代之:HTML5+CSS3入门系列~H5 多媒体系

1.引入 概述 音频文件或视频文件都可以看做是一个容器文件(类似于压缩的zip) 编解码器就是读取特定的容器格式,对其中的音频与视频轨进行解码,然后实现播放 解码器 解码器(decoder),是一种…

C++ 泛型编程 类型萃取器的运用

C 泛型编程 类型萃取器的运用 一、C类型萃取器的基本概念与应用(Type Traits in C)1.1 类型萃取器的定义与作用(Definition and Role of Type Traits)1.2 类型萃取器的分类与特性(Classification and Characteristics …

机器学习极简介绍(二)

人工智能AI 与 机器学习 人工智能、机器学习和深度学习是什么关系? 对于小白来说这些个概念总是混淆,人工智能 ≠ 机器学习,人工智能是更广泛的概念,它包括了所有使计算机系统具备智能行为和能力的技术和方法。机器学习是人工智…

postgres篇---docker安装postgres,python连接postgres数据库

postgres篇---docker安装postgres,python连接postgres数据库 一、docker安装postgres1.1 安装Docker:1.2 从Docker Hub获取PostgreSQL镜像1.3 创建PostgreSQL容器1.4 访问PostgreSQL 二. python连接postgres数据库2.1 connect连接2.2 cursor2.3 excute执…

ubuntu22.04下用opencv4.5.4访问照片、视频、摄像头

本文主要记录近期在学习opencv使用过程中的一些细节 前言:ubuntu22.04 OpenCV4.6.0(c)环境配置 opencv的安装过程可参考下面博文,亲测有效(容易出现问题的地方在安装下面依赖的时候,一般会出现报错,需要自己换源&…

让你不再疑惑音频如何转文字

随着科技的不断发展,我们现在可以通过各种智能设备来轻松地录制音频。但是,当我们需要将音频中的内容转换成文字时,该怎么办呢?这时候,转换工具就派上用场了!那么你知道音频怎么转文字吗?接下来…

CSS2学习笔记

一、CSS基础 1.CSS简介 CSS 的全称为:层叠样式表 ( Cascading Style Sheets ) 。CSS 也是一种标记语言,用于给 HTML 结构设置样式,例如:文字大小、颜色、元素宽高等等。简单理解: CSS 可以美化 HTML , 让 HTML 更漂亮…

【产品经理】成熟产品狗必备特质

在自己从事产品经理这个职位的3年间,看过不少产品经理成长相关的文章书籍,涵盖了挺多经验、素质、能力,平时工作中也会注意学以致用,所以每每回顾此事,都觉得这对自己的工作、个人成长起到了莫大的推进作用。 1、外部合…

Docker是什么、有什么用的介绍

文章目录 1.背景2. Docker 是什么?3.Docker 容器与虚拟机的区别4.Docker 的 6 大优势1、更高效地利用系统资源2、更快的启动时间3、一致的运行环境4、持续交付和部署5、更轻松迁移6、更轻松的维护和拓展 小结 知识搬运工: 原文出自: 原文链接…

网络渗透技术如何自学,自学黑客要多久

学习网络渗透技术是一件靠兴趣驱动的事情,只有强烈热爱一件事才能持之以恒的去做,对于那些三分钟热度的人来说还是劝你放弃吧,因为网络渗透技术自学需要很多方面的知识,没耐心是无法学会的,当然除了有想要学习的决心之…

企业研发提效抓手,揭秘云原生的效能“奇点”

导语 | 在云原生时代,研发效能治理面临新的挑战,同时也获得了新的视角。如何更好地利用云原生技术的优势,从而在根本上提升研发效能,已成为许多企业数字化转型过程中的“必答题”。今天,我们特别邀请了 Thoughtworks 创…