MySQL 数据库安装全攻略

在本文中,将为您详细介绍 MySQL 数据库的两种安装方式:编译安装和二进制安装。无论您是新手还是有一定经验的开发者,相信这篇文章都能为您提供有价值的参考。

一、MySQL 的编译安装

(一)准备工作

首先,如果您的系统中安装有 Mariadb,需要先进行卸载。可以通过以下命令检查并卸载

[root@www ~]# rpm -q mariadb 
mariadb-5.5.52-1.el7.x86_64 
[root@www ~]# yum remove mariadb 

 注意:CentOS 系统默认安装了 mariadb-libs 包,这个包会在 /etc 下生成 Mariadb 的配置文件 my.cnf,所以系统中默认会存在一个 my.cnf 的配置文件。

接下来,安装 MySQL 所需的依赖包

[root@www ~]# yum -y install gcc gcc-c++ ncurses-devel openssl openssl-devel

 这里的 ncurses 是字符终端下屏幕控制的基本库,在 TTY 下登录到主机上运行 MySQL 时需要用到。而 OpenSSL 是一个开放源代码的软件库包,能让应用程序进行安全通信,避免窃听,同时确认另一端连接者的身份。

然后,安装 cmake 编译工具:

[root@www ~]# tar zxf cmake-3.16.2.tar.gz 
[root@www ~]# cd cmake-3.16.2 
[root@www cmake-3.16.2]#./configure 
[root@www cmake-3.16.2]# gmake && gmake install

 最后,安装 boost 库:

[root@www ~]# tar zxvf boost_1_59_0.tar.gz 
[root@www ~]# mv boost_1_59_0/ /usr/local/boost

要知道,Boost 库是为 C++ 语言标准库提供扩展的一些 C++ 程序库的总称,由 Boost 社区组织开发、维护。它能够与 C++ 标准库完美协同工作,并且为其提供扩展功能。而 MySQL 正是使用 C 语言和 C++ 语言编写的。

(二)源码编译及安装 MySQL

1.创建运行用户:

[root@www ~]# useradd -M -s /sbin/nologin mysql

2.解包:

[root@www ~]# tar zxvf mysql-5.7.28.tar.gz 
[root@www ~]# cd mysql-5.7.28

3.配置:

[root@www mysql-5.7.28]# cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_BOOST=/usr/local/boost

这里的各个参数都有其特定的作用,比如 -DSYSCONFDIR 用于指定初始化配置文件目录,-DDEFAULT_CHARSET 用来指定默认使用的字符集编码,像 utf8 ,而 -DDEFAULT_COLLATION 则指定默认使用的字符集校对规则,如 utf8_general_ci 适用于 UTF-8 字符集的通用规则。-DWITH_EXTRA_CHARSETS 用于指定额外支持的其他字符集编码,-DWITH_BOOST 是指定 boost 库的位置,要注意,MySQL5.7 版本编译安装时必须添加这个参数。

4.编译并安装:

[root@www mysql-5.7.28]# make 
[root@www mysql-5.7.28]# make install

(三)安装后的调整

1.建立配置文件:

[root@www ~]# vim /etc/my.cnf 
[client] 
socket=/usr/local/mysql/data/mysql.sock [mysqld] 
socket=/usr/local/mysql/data/mysql.sock 
#绑定监听地址 0.0.0.0 
bind-address = 0.0.0.0 
skip-name-resolve 
#设置 3306 端口 
port = 3306 
# 设置 mysql 的安装目录 
basedir=/usr/local/mysql 
# 设置 mysql 数据库的数据的存放目录 
datadir=/usr/local/mysql/data
# 允许最大连接数 
max_connections=2048 
# 服务端使用的字符集默认为 utf8 
character-set-server=utf8 
# 创建新表时将使用的默认存储引擎 
default-storage-engine=INNODB 
#表名大小写不敏感
lower_case_table_names=1 
#mysql服务允许接受的数据包最大值
max_allowed_packet=16M[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
#pid-file=/var/run/mariadb/mariadb.pid

需要注意的是,[mysqld_safe] 部分的 log-error 只有在使用 mysqld_safe 启动时才会生成。如果希望在初始化 MySQL 后马上生成这个日志文件,可以将 log-error 写入到 [mysqld] 中。

2.初始化数据库:

[root@www mysql-5.7.28]# /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

请务必记下初始密码,并且要知道,如果想要重新初始化,需要删除数据目录。

3.设置环境变量:

[root@www mysql-5.7.28]#echo "export PATH=$PATH:/usr/local/mysql/bin">> /etc/profile 
[root@www mysql-5.7.28]#. /etc/profile

(四)添加系统服务

[root@www mysql-5.7.28]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld 
[root@www mysql-5.7.28]# chmod +x /etc/rc.d/init.d/mysqld将 MySQL 添加为 systemd 标准服务,之后方便使用“systemctl”命令进管理[root@www ~]# vim /lib/systemd/system/mysqld.service 
[Unit] 
Description=mysqld 
After=network.target 
[Service] 
Type=forking 
ExecStart=/etc/rc.d/init.d/mysqld start 
ExecReload=/etc/rc.d/init.d/mysqld restart 
ExecStop=/etc/rc.d/init.d/mysqld stop 
PrivateTmp=true 
[Install] 
WantedBy=multi-user.target [root@www ~]# systemctl daemon-reload 
[root@www ~]# systemctl enable mysqld 
[root@www ~]# systemctl start mysqld
[root@www ~]# systemctl status mysqld
[root@www ~]# netstat -anpt | grep mysqld

至此,源码包编译安装完成。

 

二、MySQL 的二进制安装

(一)基础环境准备

首先执行以下命令:

[root@www ~]# yum -y install gcc vim wget net-tools lrzsz libaio

备注libaio 是 Linux 版本的 aio 库,aio 指的是异步 IO

(二)创建运行用户

[root@www ~]# useradd -M -s /sbin/nologin mysql

(三)关闭防火墙

执行以下命令关闭防火墙:

[root@www ~]# sed -i '/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config 
[root@www ~]# setenforce 0 
[root@www ~]# systemctl disable firewalld 
[root@www ~]# systemctl stop firewalld

(四)二进制安装

[root@www ~]# tar zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz 
[root@www ~]# mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql 
[root@www ~]# mkdir /usr/local/mysql/data 
[root@www ~]# chown -R mysql.mysql /usr/local/mysql/data 
[root@www ~]# cd /usr/local/mysql/bin 
[root@www ~]#./mysqld --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --initialize

(五)设定配置文件

[root@www ~]# vim /etc/my.cnf 
[client] 
socket=/usr/local/mysql/data/mysql.sock [mysqld] 
socket=/usr/local/mysql/data/mysql.sock 
bind-address = 0.0.0.0 
skip-name-resolve 
port = 3306 
basedir=/usr/local/mysql 
datadir=/usr/local/mysql/data 
max_connections=2048 
character-set-server=utf8 
default-storage-engine=INNODB 
lower_case_table_names=1 
max_allowed_packet=16M[mysqld_safe]
log-error=/usr/local/mysql/data/error.log
#pid-file=/var/run/mariadb/mariadb.pid

备注skip-name-resolve 用于跳过名称解析。所谓反向解析是这样的:MySQL 接收到连接请求后,获得的是客户端的 ip ,为了更好地匹配 mysql.user 里的权限记录(某些是用 hostname 定义的)。如果 MySQL 服务器设置了 dns 服务器,并且客户端 ip 在 dns 上并没有相应的 hostname ,那么这个过程会很慢,导致连接等待。添加 skip-name-resolve 以后就可以跳过这个过程了。

然后执行以下命令:

[root@www ~]# echo "export PATH=$PATH:/usr/local/mysql/bin">> /etc/profile 
[root@www ~]#. /etc/profile

(六)配置 systemctl 方式启动

[root@www ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld 
[root@www ~]# chmod +x /etc/rc.d/init.d/mysqld[root@www ~]# vim /lib/systemd/system/mysqld.service 
[Unit] 
Description=mysqld 
After=network.target 
[Service] 
Type=forking 
ExecStart=/etc/rc.d/init.d/mysqld start 
ExecReload=/etc/rc.d/init.d/mysqld restart 
ExecStop=/etc/rc.d/init.d/mysqld stop 
PrivateTmp=true 
[Install] 
WantedBy=multi-user.target

备注
Type 的不同取值有着不同的含义和适用场景。

  • Type=oneshot 适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态。
  • Type=notify 与 Type=simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由 libsystemd-daemon.so 提供。
  • Type=dbus 若以此方式启动,当指定的 BusName 出现在 DBus 系统总线上时,systemd 认为服务就绪。
  • Type=idle 意味着 systemd 会等待所有任务处理完成后,才开始执行 idle 类型的单元。其他行为与 Type=simple 类似。
  • Type=forking 表示 systemd 认为当该服务进程 fork ,且父进程退出后服务启动成功。对于常规的守护进程( daemon ),除非您确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定 PIDFile= ,以便 systemd 能够跟踪服务的主进程。
  • Type=simple 表示 systemd 认为该服务将立即启动。服务进程不会 fork 。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是 socket 激活型。

备注:在 Linux 中,fork 函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。当一个进程调用 fork() 函数后,系统先给新的进程分配资源,然后把原来的进程的所有值都复制到新的新进程中。这样就把新的进程创建了出来,在 fork 函数执行完毕后,如果创建新进程成功,则出现两个进程,一个是子进程,一个是父进程。当子进程创建好后,这个父进程就退出,也代表该服务创建成功。

接下来执行以下命令:

[root@www ~]# systemctl daemon-reload 
[root@www ~]# systemctl enable mysqld 
[root@www ~]# systemctl start mysqld 
[root@www~]# netstat -tunlp|grep 3306

(七)访问 MySQL 数据库

[root@www ~]# mysql -u root -p
mysql>set password =password('pwd123');

希望通过上述详细的步骤和说明,能够帮助您顺利完成 MySQL 数据库的安装,并能够正常使用。祝您在数据库的世界中畅游无阻!

 


 

 

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

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

相关文章

QThread 与QObject::moveToThread利用Qt事件循环在子线程执行多个函数

1. QThread的两种用法 第一种用法就是继承QThread,然后覆写 virtual void run(), 这种用法的缺点是不能利用信号槽机制。 第二种用法就是创建一个线程,创建一个对象,再将对象moveToThread, 这种可以充分利用信号槽机制&#xff…

MySQL 支持的多种日期和时间类型

MySQL 支持的多种日期和时间类型 MySQL 支持多种日期和时间类型,包括: 1. DATE: 存储日期值(年、月、日),格式为 YYYY-MM-DD,例如:2024-06-11。 2. TIME: 存储时间值(小时、分钟、秒…

199.罗马数字转整数(力扣)

代码解决 class Solution { public:// 定义一个哈希表来存储罗马数字符号及其对应的整数值unordered_map<char, int> res {{I, 1},{V, 5},{X, 10},{L, 50},{C, 100},{D, 500},{M, 1000},};// 将罗马数字字符串转换为整数的函数int romanToInt(string s) {int num 0; …

ElasticSearch安装、配置详细步骤

一、环境及版本介绍 操作系统&#xff1a; Windows 10 软件版本&#xff1a; elasticsearch-7.17.22、kibana-7.17.22、IK-7.17.22 开发环境选择软件版本应提前考虑正式系统得环境&#xff0c;否则会产生软件与服务器环境不兼容得问题出现&#xff0c;ElasticSearch与环境支…

【机器学习300问】132、自注意力机制(Self-Attention)和传统注意力机制(Attention)的区别?

最近学习注意力机制的时候&#xff0c;发现相同的概念很多&#xff0c;有必要给这些概念做一下区分&#xff0c;不然后续的学习可能会混成一团。本文先区分一下自注意力机制和传统注意力机制。我会先直接给出它们之间有何区别的结论&#xff0c;然后通过一个例子来说明。 一、…

【C++题解】1711. 输出满足条件的整数1

问题&#xff1a;1711. 输出满足条件的整数1 类型&#xff1a;简单循环 题目描述&#xff1a; 有这样的两位数&#xff0c;其十位上的数字比个位上的数字要大&#xff0c;且十位和个位上的数字之和为偶数&#xff0c;请找出所有的满足条件的 2 位数。 输入&#xff1a; 无。…

Spring IOC 控制反转总结

Spring IOC 控制反转总结 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代Java开发中&#xff0c;Spring框架已成为不可或缺的工具&#xff0c;其核心概…

想法是否可行(学习笔记)

切入时机 进入市场的切入时机是否成熟&#xff0c;现有的技术手段和基础设施是否能够满足需求&#xff0c;用户的使用习惯和心理认知是怎么样的&#xff1f; 运营推广 有哪些渠道进行运营推广&#xff0c;产品的本身是否足够好&#xff0c;是否有足够的留存&#xff0c;是否能…

前端算法--括号⽣成

题⽬描述 数字 n 代表⽣成括号的对数&#xff0c;请你设计⼀个函数&#xff0c;⽤于能够⽣成所有可能的并且 有效的 括号组合。 示例&#xff1a; 输⼊&#xff1a; n 3 输出&#xff1a; [ "((()))", "(()())", "(())()", "()(()…

Unity的Excel转表工具

该Excel工具主要由Python语言完成&#xff0c;版本为3.x 主要功能&#xff1a; 1.转换后的数据存储结构为二进制。 2.excel文件可以选择多种数据类型&#xff1a;int、float、string、一维&#xff08;int、float、string&#xff09;、二维int、Map&#xff08;int/int、in…

Hive基础知识(十九):Hive 自定义函数

1. 自定义函数 1&#xff09;Hive 自带了一些函数&#xff0c;比如&#xff1a;max/min 等&#xff0c;但是数量有限&#xff0c;自己可以通过自定义 UDF 来方便的扩展。 2&#xff09;当 Hive 提供的内置函数无法满足你的业务处理需要时&#xff0c;此时就可以考虑使用用户自…

xcode15 升级大坑

Q&#xff1a;iOS17 SDK 模拟器 7个多G,一直安装失败&#xff0c;都是网络中断&#xff0c;试了第六次竟然硬生生下载并安装成功。如果实在不成功尝试一下步骤&#xff1a; 1.直接在Apple官网找到你要下载的文件&#xff0c;https://developer.apple.com/download/all/ 2.下…

golang常用库之-godotenv库从.env文件读取配置数据

文章目录 golang常用库之-从.env文件读取配置数据godotenv库使用 golang常用库之-从.env文件读取配置数据 godotenv库从.env文件中读取配置&#xff0c; 然后存储到程序的环境变量中。在代码中可以使用读取非常方便。 godotenv库 官方&#xff1a;https://pkg.go.dev/github…

图的搜索。

用邻接表作为图的存储结构建立一个图&#xff0c;并对此图分别进行深度优先搜索和广度优先搜索遍历。 #include<stdio.h> #include<stdlib.h> #define MAX_VERTEM_NUM 10 #define INFINITY 32768 typedef enum{ DG,DN,UDG,UDN }graghKind; //digraph D…

【AI应用探讨】—小型神经网络应用场景

目录 1. 移动设备 2. 物联网设备 3. 无人驾驶 4. 可穿戴设备 5. 其他领域 1. 移动设备 a. 图像识别 用例&#xff1a;在智能手机和平板电脑上运行的实时图像识别应用&#xff0c;如人脸识别、物体识别等。优势&#xff1a;小型神经网络能够在这些设备上快速运行&#xff…

Visual Studio Code 配置 java/maven 环境(Windows版)

在Windows版Visual Studio Code&#xff08;VS Code&#xff09;中配置Java和Maven环境&#xff0c;可以按照以下步骤进行&#xff1a; 1. 安装JDK 确保已经安装了JDK 8或更高版本。建议访问Oracle官网或OpenJDK官网下载相应版本的JDK。安装JDK后&#xff0c;配置系统环境变量…

OpenFeign 的请求处理流程

流程 1. 定义 Feign 客户端接口 首先&#xff0c;开发者需要定义一个 Feign 客户端接口&#xff0c;并使用 FeignClient 注解进行配置。例如&#xff1a; FeignClient(name "aService", url "http://localhost:8080") public interface ServiceProvid…

Python | Leetcode Python题解之第169题多数元素

题目&#xff1a; 题解&#xff1a; class Solution:def majorityElement(self, nums: List[int]) -> int:count 0candidate Nonefor num in nums:if count 0:candidate numcount (1 if num candidate else -1)return candidate

linux下编译安装python3

目录 一、注意事项 二、安装前依赖安装 三、下载python3 四、编译安装 五、查看是否安装成功 一、注意事项 linux下一般会自带python2&#xff0c;很多程序会依赖python2,所以要在python2基础上安装python3 二、安装前依赖安装 yum -y install zlib* yum install libffi-d…

Jotai-灵活的、细粒度的 React 状态管理库

一、Jotai是什么&#xff1f; Jotai 是一个用于 React 的轻量级状态管理库&#xff0c;名字来源于日语中的 "状態" (Jōtai)&#xff0c;意思是“状态”。它的设计目标是提供一种简单、灵活且强大的方式来管理 React 应用中的状态&#xff0c;特别适合处理复杂的状态…