小阿轩yx-MySQL数据库初体验

小阿轩yx-MySQL数据库初体验

数据库简介

21 世纪迈入了“信息爆炸时代”,大量的数据、信息在不断产生,伴随而来的就是如何安全、有效地存储、检索和管理它们。

对数据的有效存储、高效访问、方便共享和安全控制已经成为信息时代亟待解决的问题。

使用数据库的必要性

  • 可以高效且条理分明存储数据

好处

  • 能够更加快速、方便管理数据

数据库特点

  • 可以结构化存储大量的数据信息,方便用户进行有效的检索和访问
  • 可以有效地保持数据信息的一致性、完整性,降低数据几余
  • 可以满足应用的共享和安全方面的要求

数据库的基本概念

数据
  • 描述事物的符号记录
  • 以“记录”的形式按照统一的格式进行存储,相同格式和类型的数据统一放在一起

数据包括

  • 数字
  • 文字
  • 图形
  • 图像
  • 声音
  • 档案记录
数据库和数据库表
  • 不同的记录组织在一起形成数据库(Database,DB)的“表”(Table)
  • 表是存储数据的
数据库管理系统和数据库系统

数据库管理系统(Database Management System,DBMS)

  • 实现对数据库资源
  • 有效组织
  • 管理
  • 存取的系统软件
  • 它在操作系统的支持下,支持用户对数据库的各项操作

DBMS主要包括以下功能

  • 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的转储与恢复、数据库的重组与性能监视等功能
  • 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语义的错误数据被输入或输出
  • 数据操纵功能:包括数据查询统计和数据更新两个方面
  • 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控制、数据库内部维护等功能
  • 通信功能:DBMS 与其他软件系统之间的通信,如Access 能与其他 Office 组件进行数据交换

数据库系统

  • (Database System,DBS)是一个人与机器交互系统

一般由以下组成

  • 硬件
  • 操作系统
  • 数据库
  • DBMS
  • 应用软件
  • 数据库用户(包括数据库管理员)

用户可以通过 DBMS 操作数据库,也可以通过应用程序操作数据库。
应用程序

  • 利用 DBMS 为解决某个具体的管理或数据处理的任务而编制的一系列命令的有序集合

数据库应用软件

如果应用程序比较完善,能够提供友好的人机界面,并编译成可执行文件发行,使得普通用户不需要具备计算机的专业知识,在较短时间就学会使用

常用的数据库应用软件

  • 人事管理
  • 财务管理
  • 图书管理等信息管理软件
  • 及各类信息咨询系统等

数据库管理员

(Database Administrator,DBA)负责

  • 数据库的更新
  • 备份
  • 数据库系统的维护
  • 用户管理等工作,保证数据库系统的正常运行

DBA 人员优势

  • 业务水平较高
  • 资历较深

(注:数据库、数据库系统、数据库管理系统,甚至数据库表等名词,在日常讨论中通常不严格区别)

数据库发展史

数据库系统发展史

数据库技术最初产生于 20世纪 60年代中期,根据数据模型的发展

可以划分为三个阶段

  • 第一代的网状、层次数据库系统
  • 第二代的关系数据库系统
  • 第三代的以面向对象模型为主要特征的数据库系统
初级阶段—第一代数据库
  • 自 20世纪60年代起,第一代数据库系统问世
  • 它们是层次模型与网状模型的数据库系统
  • 为统一管理和共享数据提供了有力的支撑
中级阶段—第二代数据库
  • 20 世纪 70年代初,第二代数据库--关系数据库开始出现
  • 自 1970年 IBM 研究员德加·考特阐述了关系模型的概念后,IBM 大力投入关系数据库的研究

关系数据库

优势

  • 底层实现起来比较容易,所以很快被采用,并进入了众多商业数据库的研发计划

扩展

  • 0racle 就是当时应关系数据模型的出现而成立的一家专做(关系)数据库的公司
  • 20世纪 80年代初,IBM公司的关系数据库系统 DB2问世,而0racle 公司也将 0racle 数据库移植到桌面计算机上
高级阶段—第三代数据库

自20世纪80年代开始,各种适应不同领域的新型数据库系统不断涌现

  • 工程数据库
  • 多媒体数据库
  • 图形数据库
  • 智能数据库
  • 分布式数据库
  • 面向对象数据库等

特别是面向对象数据库系统

  • 由于其实用性强、适应面广而受到人们的青睐

20 世纪 90 年代后期,形成了多种数据库系统共同支撑应用的局面

在商务应用方面,依然还是关系数据库占主流。不过,已经有一些新的元素被添加进主流商务数据库系统中

经典数据模型
  • 数据是现实世界中“量”的抽象,而数据模型(Data Mode1)是数据特征的抽象
  • 在数据库系统中,数据模型是它的核心与基础
  • 数据模型表现为数据的结构、定义在其上的操作及约束条件
  • 它从概念层次上描述了系统的静态特征、动态特征和约束条件,为数据库系统的信息表示与操作提供了一个抽象框架

DBMS 的发展过程中出现的三种数据模型

  • 网状模型
  • 层次模型
  • 关系模型

由于受限于数学基础、编程技术和硬件条件最初出现的层次模型和网状模型与关系模型相比,在用户接口的上、中层部分更易于实现

数据模型所描述的内容包括三方面

  • 数据结构
  • 数据操作
  • 数据约束

三种经典数据模型介绍

网状模型

  • 适合表达复杂的数据关系
  • 也可以将数据几余减小到最小
  • 它的数据结构模型能直观反映现实中数据之间的联系

数据结构

  • 数据记录组织成图的形式,使用“数据结构图”进行抽象的分析和表示

它表示了下列基本关系

  • 一个银行客户可以拥有多个银行账号(一对多)。
  • 一个银行账号也可以被多个客户所有(一对多)。
  • 每个银行账户位于特定的银行支行(一对一)。

其中更蕴含着客户和银行之间多对多、多对一的关系。

这样复杂的数据关系,在网状模型上可以得到很好的支持。

数据操作

  • 网状模型的数据操作是建立在关系链基础上的导航式的操作
  • 针对一个特定的网状模型系统的数据结构,有可能找到最优的查询算法

缺点

  • 一旦结构发生变化,就需要新的查询办法
  • 网状模型以图论为基础,还无法得到一个通用的、高效的解决方案

数据约束
网状模型的数据约束是零散孤立的,或者分散在各个节点,或者集中成为一种关系链,

缺点

  • 容易导致不一致性或降低效率
  • 通常网状模型不具体实现数据约束,而由应用程序自身来实现数据约束
  • 这样的情况也使得在网状模型基础上的开发变得困难重重

层次模型

数据结构

  • 层次模型是网状模型的一个特例
  • 在层次模型中,数据记录组织成树的形式,使用“树结构图”进行抽象的分析和表示,适合一对多的关系模型

它包含了下列关系

  • 企业下辖多个部门(一对多)。
  • 部门下辖多个科室(一对多)。
  • 科室下辖多个小组(一对多)。

优点

  • 相对于网状模型,层次模型禁止了多对多和多对一的关系,使得它的数据结构相对简单

数据操作

  • 在层次模型上的数据操作不可避免地具有网状模型的特点——导航性
  • 由于禁止了多对一和多对多的关系,因此数据操作相对网状模型而言简单了许多。
  • 这样的结构有利于提高数据的查询效率,但数据存取上还存在着必须导航的要求。
  • 因此层次模型的数据库在数据操作上依然比较复杂。

数据约束

  • 层次模型的数据约束与网状模型相似

优势

  • 由于结构的简化,去掉了网状模型中多对多和多对一的关系,数据约束处理的复杂性按级数下降。

(注:层次模型的数据约束可以做到适当的系统实现,但很多还是依靠应用程序本身实现。)

层次模型的实现技术一直独领风骚

  • 比关系模型优越
  • 比网状模型简单

(注:它的代表是IBM公司的IMS系统。该系统曾是使用最早和最广的几个数据库之一,在历史上曾是最大的数据库之一

DB2长盛不衰的根源

  • 它的开发者是最早开始处理并发
  • 恢复
  • 完整性
  • 高效査询等问题
  • 其中的一些技术和思想应用到 DB2中

关系模型

数据结构

关系模型建立在关系代数的理论基础上,数据结构使用简单易懂的二维数据表,可以用简单的“实体-关系”(E-R)图来直接表示

  • 实体:也称为实例,对应现实世界中可区别于其他对象的“事件”或“事物”
  • 实体集:具有相同类型及共享相同性质的实体集合
  • 属性:实体所具有的某一特性,一个实体可以有多个属性

数据操作

对数据库的用户而言,关系模型使用从关系代数上抽象出来的数据库操作语言(DML)进行操作。结构化查询语言(SQL)就是其中最重要的一种,已经成为关系数据库的标准操作语言。

特色

  • 直接面向结果
  • 简化操作步骤
  • 使得数据库应用的设计变得非常简单易懂

对于数据库的物理结构而言,关系数据库系统的数据

  • 结构简单
  • 功能强
  • 数据独立性高
  • 理论基础坚实

严格的关系数据库以二维的数据库表作为基本数据结构,利用简单或复杂的索引技术实现查询算法,实现起来相对比较简单,也方便了预编译技术将 SQL 语言直接转化为有效的数据检索算法。

数据约束

  • 关系模型的
  • 可以针对实体
  • 也可以针对实体的属性
  • 还可以针对关系
  • 并可以在定义实体、实体属性和关系时全面实现

关系模型使用

  • 数据定义语言(DDL)
  • 关系模型在理论上对关系数据库核心实现的要求

缺点

  • 可以很容易实现
  • 效率并不高

区别比较

关系模型相比网状模型和层次模型

  • 有更为坚实和完整的理论基础

相比层次模型和网状模型而言

  • 关系模型与用户更靠近些

而网状模型和层次模型

  • 与底层实现的结合更紧密
当今主流数据库介绍
关系数据库

20世纪 80~90年代是关系数据库产品发展和竞争的时代

主流商用数据库

  • SQL Server
  • 0racle
  • IBM DB2
  • MySQL

SQL Server 简介

  • 是 Microsoft 公司的数据库产品
  • 在设计上大量利用了 Microsoft windows操作系统的底层结构
  • 直接面向Microsoft Windows,尤其是 Windows 系列服务器操作系统的用户
  • Microsoft Windows 拥有众多的用户群
  • Microsoft 所有的产品都遵循统一的操作习惯对数据库基本概念熟悉的 Windows用户

好处

  • 能快速学会使用 SQL Server
  • 上手比较容易

Windows 系统的易用性让数据库管理员可以

  • 更容易
  • 更方便
  • 更轻松进行管理

Oracle 简介

  • 成立于 1977年,最初就是专门的数据库公司
  • 1998年9月,0racle公司正式发布 0racle8i,“i”代表 Internet,这一版本中添加了大量为支持 Internet 而设计的特性。数据库用户提供了全方位的 Java 支持。
  • 2001年6月的 Oracle 0pen World大会中,Oracle 公司发布了 Oracle 9i,包含应用集群软件 Real Application Clusters(RAC)和商务智能(BI)功能。
  • 2004年2月,Oracle 公司发布了 Oracle 10g版本,“g”代表grid(网格)。最突出特性就是加入了网格计算的功能。
  • 2013年6月,Oracle 12C正式发布,提供了先进的技术堆管理、安全的数据库管理及企业级的服务管理,使企业能够快速实现私有云。

数据库领域 Oracle 公司在很长一段时间内一直处于领先地位,不仅数据库核心相当优秀,而且其相关的支持产品也相当完善和全面。

优势

  • Oracle能适应 70 多种操作系统,这也是其他产品难以企及的优势。

(注:随着云计算的发展,以Oracle 为代表的传统数据库正在逐渐失势

2019年10月15日亚马逊宣布永久关闭 Oracle 数据库业务

亚马逊关闭 Oracle 既是自身产业转型升级的需要

DB2 简介

  • 1970年,IBM 公司的一位研究员德加·考特发表论文,提出“关系模型”的概念。被称为“关系数据库之父”

MySQL 简介

  • 也是一个关系型数据库管理系统,现已被 0racle 公司收购。
  • 它与上述大型数据库相比,有不足之处,但是这丝毫没有减少它受欢迎的程度。

优势

  • MySQL 运行于 Linux 操作系统之上
  • MySQL 作为后台数据库
  • 免费或开源
  • 企业可以不花一分钱(除人工外)就能建立起一个稳定、高速的网站系统,业内称为“LAMP”
  • 以体积小、速度快、开源等特点,霸占了中小型网站相当大的市场

非关系数据库

  • 也被称作 NoSQL(Not 0nly SQL)
  • 存储数据不以关系模型为依据
  • 不需要固定的表格式

优点

  • 数据库高并发读写的需求
  • 对海量数据高效率存储与访问
  • 数据库的高扩展性与高可用性的需求

常用的非关系数据库

  • Memcached
  • Redis
  • MongoDB
  • HBase

关系数据库的基本概念

  • 基于关系模型的数据库系统
  • 是关系模型应用到数据库领域的实例化
  • 它的基本概念来自于关系模型

基本结构

  • 是多个二维表格,即反映事物及其联系的数据描述是以平面表格形式体现的。
  • 每个二维表中,每一行称为一条记录,用来描述一个对象的信息;
  • 每一列称为一个字段,用来描述对象的一个属性。数据表与数据库之间存在相应的关联,这些关联用来查询相关的数据

由数据表之间的关联组成

  • 数据表通常是一个由行和列组成的二维表,每一个数据表分别说明数据库中某一特定的方面或部分的对象及其属性。
  • 数据表中的行通常叫做记录或者元组,它代表众多具有相同属性的对象中的一个
  • 数据表中的列通常叫做字段或者属性,它代表相应数据库中存储对象的共有属性。
主键与外键
主键
  • 数据表中的每行记录都必须是唯一的,而不允许出现完全相同的记录,通过定义主键(主关键字,Primary Key)可以保证记录(实体)的唯一性。

注:

  • 键,即关键字,它是关系模型中一个非常重要的元素。
  • 主键唯一标识表中的行数据,一个主键值对应一行数据
  • 主键由一个或多个字段组成,其值具有唯一性,不允许取空值(NULL)
  • 一个表只能有一个主键
外键
  • 一个关系数据库通常包含多个表,通过外键(Foreign Key)可以使这些表关联起来。

注:

  • 外键是用于建立和加强两个表数据之间的链接的一列或多列
  • 通过将表中主键值的一列或多列添加到另一个表中,可创建两个表之间的链接
  • 这个列就称为第二个表的外键
数据完整性规则

维护数据库中的数据与现实世界的一致性,关系数据库的数据与更新操作必须遵守四类完整性规则

实体完整性规则
  • 实体完整性规则要求关系中的元组在主键的属性上不能有空值
  • 如果出现空值,那么主键值就起不到唯一标识元组的作用
域完整性规则
  • 也称列完整性,指定一个数据集对某一个列是否有效或确定是否允许空值
引用完整性规则
  • 如果两个表之间相互关联,那么引用完整性规则要求不允许引用不存在的元组
用户定义的完整性规则
  • 针对某一具体数据的约束条件,由应用环境决定
  • 它反映某一具体应用所涉及的数据必须满足的语义要求
  • 系统提供定义和检验这类完整性的机制,以便用统一的系统方法进行处理,不再由应用程序承担这项工作

MySQL 服务基础

  • 一个真正的多线程
  • 多用户的 SQL 数据库服务

成为服务器领域中最受欢迎的开源数据库系统

特性

  • 高性能
  • 高可靠
  • 易于使用

历程

  • 2008年以前,MySQL 项目由 MySQL AB 公司进行开发、发布和支持
  • 之后历经 Sun 公司收购 MySQL AB 公司,0racle 公司收购 Sun 公司的过程
  • 目前 MySQL, 项目由 0racle 公司负责运营和维护

MySQL 的编译安装

  • 确保 MySQL 数据库功能的完整性、可定制性,将采用源代码编译的方式安装MySQL, 数据库系统

其官方站点为 https://dev.mysql.com/

准备工作

注:如果系统中安装有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社区组织开发、维护。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。

Mysql使用c语言和c++语言写的

源码编译及安装mysql

创建运行用户

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

解包

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

配置

[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 版本编译安装时必须添加这个参数。

注:

Boost库是为C++语言标准库提供扩展的一些C++程序库的总称。

Boost库由Boost社区组织开发、维护。其目的是为C++程序员提供免费、同行审查的、可移植的程序库。Boost库可以与C++标准库完美共同工作,并且为其提供扩展功能。

编译并安装

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

安装后的调整

建立配置文件

[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=/usr/local/mysql/data/error.log

[mysqld_safe]下面的log-error只在用mysqld_safe启动时才会生成。

如果希望在初始化mysql后马上生成这个日志文件,可以将log-error写入到[mysqld] 中

初始化数据库

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

注:记下初始密码。要想重新初始化需要删除数据目录

设置环境变量

[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 ~]# mysql -u root -p
mysql>set password =password('pwd123');

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 's/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 :跳过名称解析

[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=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函数是非常重要的函数,它从已存在进程中创建一个新进程。新进程为子进程,而原进程为父进程。

[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>” 操作环境 

mysql>exit
Bye
[root@www ~]#

小阿轩yx-MySQL数据库初体验

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

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

相关文章

QThread 与QObject::moveToThread在UI中的应用

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

canal 服务安装

简介:Canal 是阿里巴巴开源的一个基于 MySQL 数据库增量日志解析的中间件,用于提供准实时的数据同步功能。 准备工作 1.修改配置文件 ,需要先开启 Binlog 写入功能,配置 binlog-format 为 ROW 模式,my.cnf 中配置如下&#xf…

五种实用方法!手把手教你系统盘瘦身

随着电脑的使用时间变长,电脑硬盘会逐渐被各种类型的数据占满,其中系统盘的可用空间也在慢慢变小。这是因为系统在运行过程中会产生大量临时文件和缓存文件,同时,系统的每一次更新升级也都会生成相关的文件夹存放在系统盘中&#…

LeetCode题练习与总结:克隆图--133

一、题目描述 给你无向 连通 图中一个节点的引用,请你返回该图的 深拷贝(克隆)。 图中的每个节点都包含它的值 val(int) 和其邻居的列表(list[Node])。 class Node {public int val;public L…

阐述一下Golang中defer的原理

基本用法 在Go语言中,defer关键字用于在函数返回前执行一段代码或调用一个清理函数。这对于处理文件关闭、解锁或者返回一些资源到资源池等操作非常有用。 其基本用法如下所示: package mainimport "fmt"func main() {example() }func exam…

如何使用Rekono结合多种工具自动完成渗透测试

关于Rekono Rekono是一款功能强大的自动化渗透测试工具,该工具能够结合其他多种网络安全工具并以自动化的形式完成整个渗透测试过程。在工具运行的过程中所收集到的数据将通过电子邮件或Telegram同时发送给用户,如果需要更加高级的漏洞管理功能&#xf…

浏览器(Browser):轻量级浏览器,高效浏览新体验

在可的哥桌面(Codigger Desktop),我们始终秉持创新精神,致力于提供卓越的用户体验。如今,我们激动地宣布一项全新功能的发布——轻量级浏览器Browser。这款浏览器的推出,正是我们对用户体验追求的再次体现&…

设施布置之车间布局优化SLP分析

一 物流分析(Flow Analysis) 的基本方法 1、当物料移动是工艺过程的主要部分时,物流分析就是工厂布置设计的核心工作,也是物料搬运分析的开始。 2、零部件物流是该部件在工厂内移动时所走过的路线, 物流分析不仅要考虑…

免费ai写作?这三款软件是你的好帮手!

在信息爆炸的今天,自媒体已成为越来越多人展现自我、分享知识的平台。然而,对于许多自媒体创作者来说,写作过程中的灵感枯竭、文笔不畅等问题常常困扰着他们。幸运的是,随着人工智能技术的飞速发展,免费AI写作软件应运…

2024全国高校名单发布,电子版下载!

今天,教育部网站发布了《全国高等学校名单》。截至2024年6月20日,全国高等学校共计3117所,其中:普通高等学校2868所,含本科学校1308所、高职(专科)学校1560所;成人高等学校249所。本…

任务4.8.3 利用SparkSQL统计每日新增用户

实战概述:利用SparkSQL统计每日新增用户 任务背景 在大数据时代,快速准确地统计每日新增用户是数据分析和业务决策的重要部分。本任务旨在使用Apache SparkSQL处理用户访问历史数据,以统计每日新增用户数量。 任务目标 处理用户访问历史数…

简单了解雪花算法

雪花算法是什么 不多解释。看一看 具体是怎么 生产 唯一ID 的。 ID 由多个数据组合拼接成64位,分别是 时间戳 服务器节点ID 序列号,每个数据项占的位数不固定,可以根据实际需求设置。首位 1 个二进制位 是 符号位。 public long allocate(l…

数字样机:飞行器状态控制系统仿真

引言:数字样机起源于20世纪90年代,是一种用数字化模型代替实际物理样机进行仿真分析的技术。 传统的飞行器研发流程往往遵循一套特定的循环结构:在设计初期,工程人员需要对飞行器提供一个综合的设计思路(初期蓝图&…

Linux【实操篇-文件目录类命令】

05【实操篇-文件目录类命令】 1.pwd 显示当前工作目录的绝对路径 pwd:print working directory 打印工作目录 到现在为止,我们还不知道自己在系统的什么地方。在浏览器上,我们能够通过导航栏上的url,了解到自己在互联网上的具体坐标。相似的…

Linux权限理解

目录 一.权限的概念 二.Linux权限管理 1.文件访问者的分类(人) 2.文件类型和访问权限(事物属性) 3.文件权限值的表示方法 4.文件访问权限的相关设置方法 5.修改文件的拥有者 6.修改文件所属组 7.查看或修改文件权限掩码 …

vue3+Vite项目中引入Element plus组件库及基本使用步骤

一、Element Plus组件库介绍 Element Plus组件库饿了么团队为Vue3发布的组件库,它含有丰富的样式,该组件的官网:element-plus。 二、Element Plus组件安装 (1)通过vscode打开创建的vue项目,本文的项目名称为“shop-admin”,打开项…

【CT】LeetCode手撕—415. 字符串相加

目录 题目1- 思路2- 实现⭐415. 字符串相加——题解思路 3- ACM 实现 题目 原题连接:415. 字符串相加 1- 思路 模式识别:字符串相加 逆向遍历过程模拟 数据结构 ① String res :记录res 、② carry 记录进位值① 定义两个整数遍历 nums1 …

51单片机宏定义的例子

代码 demo.c #include "hardware.h"void delay() {volatile unsigned int n;for(n 0; n < 50000; n); }int main(void) {IO_init();while(1){PINSET(LED);delay();PINCLR(LED);delay();}return 0; }cfg.h #ifndef _CFG_H_ #define _CFG_H_// #define F_CPU …

生成模型的两大代表:VAE和GAN

生成模型 给定数据集&#xff0c;希望生成模型产生与训练集同分布的新样本。对于训练数据服从\(p_{data}(x)\)&#xff1b;对于产生样本服从\(p_{model}(x)\)。希望学到一个模型\(p_{model}(x)\)与\(p_{data}(x)\)尽可能接近。 这也是无监督学习中的一个核心问题——密度估计…

python根据excel的文件创建文件夹

这几天要整理一点文档&#xff0c;需要批量生成一些文件夹&#xff0c;&#xff08;其实也可以进一步自动生成各种文档&#xff09;&#xff0c;用到了py的功能&#xff0c;在此记录一下。 1.准备工作 需要两个库支持openpyxl和os 安装 pip install openpyxl2.代码思路 打算…