Linux入门攻坚——28、php、mysql基础

news2024/12/24 8:56:00

httpd+php:是在httpd中启用模块,不同的工作模式,使用的模块不同
  modules
    httpd:prefork --> libphp5.so
    httpd:event or worker --> libphp5-zts.so

php:引入zend engine后,分为两个阶段:opcode和excute
  scanning --> parsing --> compilation --> excution

PHP
php解释器:
  配置文件:/etc/php.ini,/etc/php.d/*.ini
  配置文件(php.ini)在PHP启动时被读取。对于服务器模块版本的PHP,仅在web服务器启动时读取一次,对于CGI和CLI版本,每次调用都会读取。

ini:
  [Section]
  directive = value

MariaDB(mysql)
关系型数据库的一种开源实现;RDBMS设计范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)、第五范式(5NF,又称完美范式)
RDBMS:
    MySQL:MySQL,MariaDB,Percona-server
    PostgreSQL:简称为pgsql --> EnterpriseDB
    Oracle:
    MSSQL:
事务:多个操作被当做一个整体对待
  ACID:Atomicity、Consistency、Isoaltion、Durability
    A:原子性;   C:一致性;   I:隔离性;   D:持久性

基本概念:
  约束:constraint,向数据表提供的数据要遵守的限制;
    主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行,且NOT NULL;
    唯一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行,允许NULL;
    外键:一个表中的某字段可填入数据取决于另一个表的主键已有的数据;
    检查性:
  索引:将表中的一个或多个字段中的数据复制一份另存,并且需要按特定次序排序存储;
  关系运算:
    选择:挑选出符合条件的部分行
    投影:挑选出需要的字段
    连接:
数据抽象:
  物理层:决定数据的存储格式,即RDBMS在磁盘上如何组织文件;
  逻辑层:描述DB存储什么数据,以及数据间存在什么样的关系;
  视图层:描述DB中的部分数据;

MariaDB:
  安装MySQL:
    源代码:编译安装
    二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用;
    程序包管理器管理的程序包:
      rpm:OS Vendor、项目官方
      deb:

MariaDB的特性:
  插件式存储引擎:存储管理器有多种实现版本,功能和特性可能略有差别:用户可根据需要灵活选择;存储引擎也称之为“表类型”;
  更多的存储引擎:MyISAM --> Aria,InnoDB --> XtraDB

安装使用MariaDB: 二进制格式的程序包安装
  CentOS 7直接提供;
  CentOS 6:
1、下载:mariadb-5.5.68-linux-x86_64.tar.gz(在下载时,看到还有mariadb-5.5.68-linux-systemd-x86_64.tar.gz,应该是对systemd的支持,即可以使用systemd进行管理),是通用二进制包。
2、创建mysql用户,以此用户运行mysql进程。

3、展开压缩包:一定放置于/car/local下

4、解压后,创建mariadb-5.5.68-linux-x86_64目录,安装要求放在mysql目录,所以创建链接:

5、进入mysql目录:

修改目录中文件及子目录的属主属组:

其中,data目录用于存储数据库数据的,一般单独存放于一个挂载的设备上,因为数据是不断增加变化的,所以存放的设备一般要能够随时扩展,因为数据重要,所以最好有快照或备份功能,这里实验将其安装在LVM上的xfs系统上。

查看本机的磁盘,sdb上还有多余的空间:fdisk  /dev/sdb -l

创建新分区:

修改分区类型:

创建物理卷、卷组、逻辑卷:

对于CentOS6,需要额外安装xfs:

创建xfs文件系统:

配置开机挂载:编辑/etc/fstab

创建/mydata目录:
mkdir /mydata

重载fstab:

创建data目录,修改属主属组:

6、创建mysql数据库:

保存数据库数据的目录是用--datadir=path参数设定,--user=user_name是指定以哪个用户运行。

.

对于mysql来说,创建的数据库其实就是data下的一个目录,目录中保存创建对应数据库的数据,一个逻辑映射关系。这里可以看到,创建了mysql目录,也就是有一个mysql数据库。

7、添加服务启动脚本,mysql已经给了:

8、准备配置文件
配置格式:类ini格式,为各程序均通过单个配置文件提供配置信息;
    [prog_name]
配置文件查找次序:
    /etc/my.cnf --> /etc/mysql/my.cnf --> --default-extra-file=/PATH/TO/CONF_FILE --> ~/.my.cnf
现在按第二个组织配置文件:创建/etc/mysql/my.cnf
  安装后的MariaDB提供了几个配置文件,是按照不同的内存大小来配置的。

cp support-files/my-large.cnf /etc/mysql/my.cnf 

调整上述文件:

9、启动MariaDB:
第一次启动时:

分析其错误提示,是创建日志文件时出错,在/var/log/目录下创建mysqld.log失败,原因是/var/log目录的属主属组是root,而mysql启动是用的mysql用户,手动创建mysqld.log文件,然后chown mysql.mysql /var/log/mysqld.log,重新启动:

MariaDB的程序组成:
C:
  mysql:CLI交互式客户端程序;
  mysqldump,mysqladmin...
S:
  mysqld_safe
  mysqld
  mysqld_multi

服务器端监听的两种socket地址:
  ip socket:监听在tcp的3306端口,支持远程通信;
  unix sock:监听在sock文件上(/tmp/mysql.sock,/var/lib/mysql/mysql.sock),仅支持本地通信。
    server:localhost,127.0.0.1   (本地共享文件通信方式)

命令行交互式客户端程序:mysql
  mysql 
    -uUSERNAME:用户名,默认为root
    -hHOST:服务器主机,默认为localhost
    -pPASSWORD:密码,默认为空
    注意:mysql用户账号由两部分组成:‘USERNAME’@‘HOST’;其中HOST用于限制此用户可通过哪些主机远程连接mysql服务器。
    支持使用通配符:
      %:匹配任意长度的任意字符;
      _:匹配任意单个字符;
  命令:
    客户端命令:本地执行;
      mysql> help    获取所有客户端命令
        每个命令都有完整形式和简写格式,如status 简写 \s
    服务端命令:通过mysql协议发往服务器执行并取回结果;
        每个命令都必须有命令结束符,默认为分号;。

使用客户端工具登录数据库:

安全初始化:mysql_secure_installation,因为root默认密码全为空,不安全,使用这个脚本进行安全初始化。

关系型数据库的常用组件:
  数据库:database
  表:table
    行:row
    列:column
  索引:index
  视图:view
  用户:user
  权限:privilege
  存储过程:procedure
  存储函数:function
  触发器:trigger
  事件调度器:event scheduler

SQL语句:
  DDL:Data Defination Language
    CREATE,DROP,ALTER
  DML:Data Manipulation Language
    INSERT,DELETE,UPDATE,SELECT
    GRANT,REVOKE

数据库:
  CREATE DATABASE|SCHEMA  [IF NOT EXISTS] ‘DB_NAME’;
  DROP DATABASE|SCHEMA [IF EXISTS] ‘DB_NAME’;
  CHARACTER SET 'character set name'  使用的字符集
  COLLATE 'collate name'   使用的排序方法
  查看支持的所有字符集:show character set;
  查看支持的所有排序规则:show collations;
  查看所有的数据库:show databases;
获取命令使用帮助:
  mysql>HELP KEYWORD; 如HELP CREATE DATABASE

表:
  CREATE TABLE [IF NOT EXISTS]  tb_name (col1 datatype 修饰符,col2 datatype 修饰符,...) ENGINE=''
  查看所有的引擎:show engines;
  查看所有的表:show tables [ from db_name];
  查看表结构:desc [db_name.]tb_name;
  删除表:DROP TABLE [IF EXISTS] tb_name;

数据类型:
  字符型:
    定长字符型:CHAR(#),BINARY(#)
    变长字符型:VARCHAR(#),VARBINARY(#)
    对象存储:
      TEXT:不区分大小写
      BLOB:区分大小写
    内置类型:
      ENUM:枚举类型
      SET:集合
  数值型:
    精确数值型:
      整型 int:tinyint、smallint、mediumint、int、bigint
      十进制 decimal:decimal
    近似数值型:单精度浮点型float、双精度浮点型double
  日期时间型:
    日期:DATE
    时间:TIME
    日期时间型:DATETIME
    时间戳:TIMESTAMP
    年份:YEAR(2),YEAR(4)

修饰符:
  NOT NULL:非空约束
  DEFAULT VALUE:设定默认值
  UNSIGNED:无符号数
  AUTO_INCREMENT:自动增长
字段修饰符:
  PRIMARY KEY
  UNIQUE KEY

数据库基础应用:

获取创建表命令帮助:mysql> HELP CREATE TABLE;
查看创建命令:SHOW CREATE TABLE tbl_name;
查看表状态:SHOW TABLE STATUS LIKE ‘tbl_name’\G

删除表:
DROP TABLE [IF EXISTS] ‘tbl_name’;
修改表:
ALTER TABLE ‘tbl_name’
  字段:
    添加字段:add
    删除字段:drop
    修改字段:alter,change,modify
  索引:
    添加索引:add
    删除索引:drop
  表选项

索引:
  索引是特殊数据结构:定义在查找时作为查找条件的字段;
  索引可以有索引名称;

DML:INSERT,DELETE,SELECT,UPDATE

DCL:GRANT,REVOKE

用户账号及权限管理:
  用户账号:'user'@'host'
  host:此用户访问mysqld服务时允许通过哪些主机远程创建连接:
    IP、网络地址、主机名、通配符(%和_);

  禁止检查主机名:my.cnf中,[mysqld] skip_name_resolve = yes

创建用户账号:
  CREATE USER ‘username’@‘host’ [IDENTIFIED BY 'password'];
删除用户:
  DROP USER 'username'@'host'

授权:
  权限:管理权限、数据库、表、字段、存储例程
  GRANT priv_type,... ON [object_type]  db_name.ta_name TO 'user'@'host' [IDENTIFIED BY 'password'];
    priv_type:ALL [PRIVILEGES]
    db_name.tb_name:
      *.*:所有库的所有表;
      db_name.*:指定库的所有表;
      db_name.tb_name:指定库的指定表;
      db_name.routine_name:指定库的存储例程;

查看指定用户获得的授权:
  SHOW GRANTS FOR 'user'@'host';
  SHOW GRANTS FOR CURRENT_USER;

回收权限:
  REVOKE priv_type,... ON db_name.tb_name FROM 'user'@'host';

注意:MariaDB服务进程启动时会读取mysql库中的所有授权表至内存中;
  (1)GRANT或REVOKE等执行权限操作会保存于表中,MariaDB的服务进程会自动重读授权表;
  (2)对于不能够或不能及时重读授权表的命令,可手动让MariaDB的服务进程重读授权表;
    mysql> FLUSH PRIVILEGES;

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

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

相关文章

算法实验3:贪心算法的应用

实验内容 &#xff08;1&#xff09;活动安排问题 设有n个活动的集合E{1, 2, …, n}&#xff0c;其中每个活动都要求使用同一资源&#xff0c;而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi&#xff0c;且si <f…

# Redis 入门到精通(五)-- redis 持久化(3)

Redis 入门到精通&#xff08;五&#xff09;-- redis 持久化&#xff08;3&#xff09; 一、redis 持久化–AOF 自动重写配置 1、AOF 自动重写方式–自动重写触发条件设置 auto-aof-rewrite-min-size size auto-aof-rewrite-percentage percent2、AOF 自动重写方式-- 自动重…

如何在Orcale首页定位到The Java® Virtual Machine Specification页面?

目标地址&#xff1a;https://docs.oracle.com/javase/specs/jls/se8/html/index.html 1. 在Orcale首页菜单栏中选择 Resources ⇒ Java Downloads 2. 往下滑&#xff0c;找到 Online Documentation 选项&#xff0c;点进去 3. 点击 Specifications 下的 Language VM 选项 5…

USB3.0接口——(5)Host数据传输模型

USB3.0接口系列&#xff1a; USB3.0接口——&#xff08;1&#xff09;基础知识 USB3.0接口——&#xff08;2&#xff09;数据结构 USB3.0接口——&#xff08;3&#xff09;协议层&#xff08;包格式&#xff09; USB3.0接口——&#xff08;4&#xff09;生产消费者模型…

IOC、DI<5> Unity、AOP

Unity.InterceptionExtension.ICallHandler实现一个操作日志记录功能 其它跟上一次一样 <?xml version"1.0" encoding"utf-8" ?> <configuration><configSections><section name"unity" type"Microsoft.Practice…

【Harmony】SCU暑期实训鸿蒙开发学习日记Day1

关于ArkTS和ArkUI&#xff0c;基础语法请看&#x1f449;官方开发手册 系统学习后&#xff0c;聊聊几个点&#xff0c;面向刚学习这门语言的小白&#xff0c;用于巩固和回顾&#x1f60b; 目录 类型推断应用 函数相关 布局方式 线性布局 堆叠布局 网格布局 弹性布局 …

C#进阶-基于.NET Framework 4.x框架实现ASP.NET WebForms项目IP拦截器

在这篇文章中&#xff0c;我们将探讨如何在 ASP.NET WebForms 中实现IP拦截器&#xff0c;以便在 ASMX Web 服务方法 和 HTTP 请求 中根据IP地址进行访问控制。我们将使用自定义的 SoapExtension 和 IHttpModule 来实现这一功能&#xff0c;并根据常用的两种文本传输协议&#…

jmeter之变量随机参数化以及解决多线程不会随机变化

参考链接&#xff1a; https://www.cnblogs.com/Testing1105/p/12743475.html jmeter 使用random函数多线程运行时数据不会随机变化&#xff1f;_jmeter 线程组循环执行时 变量不变-CSDN博客 1、如下图所示&#xff0c;需要对请求参数 autor 和phone进行随机参数化 2、目前有…

2024大模型十大趋势

2024大模型十大趋势 关键要点一、机器外脑时代的智慧探索二、机器外脑、创意生成和情感陪伴三、大模型驱动的新未来&#xff1a;AI带来创意转化与机遇四、人物-行为-场景一体化&#xff1a;未来人工智能的新范式五、未来数字内容生产的基础设施六、共创、共建、共享智能美好未来…

Linux - 冯-诺依曼体系结构、初始操作系统

目录 冯•诺依曼体系 结构推导 内存提高效率的方法 数据的流动过程 体系结构相关知识 初始操作系统 定位 设计目的 操作系统之上之下分别有什么 管理精髓&#xff1a;先描述&#xff0c;再组织 冯•诺依曼体系 结构推导 计算机基本工作流程图大致如下&#xff1a; 输入设备&a…

删除windows系统里磁盘的恢复分区

说下我的情况 我买了块固态磁盘&#xff0c;插上主板&#xff0c;发现它自带了系统&#xff0c;这样我开机就会转到这块磁盘&#xff0c;即使在boot里改变也不行&#xff0c;后面我格式化了对应的盘符&#xff0c;但在磁盘管理里&#xff0c;发现有个EFI系统分区和恢复分区存在…

初识并发编程

并发编程的目的是 为 了 让 程序运行得更快&#xff0c;但是&#xff0c;并不是启 动 更多的 线 程就能 让 程序最大限度地并发执 行。在 进 行并 发编 程 时 &#xff0c;如果希望通 过 多 线 程 执 行任 务让 程序运行得更快&#xff0c;会面临 非常多的挑 战 &#xff0c;比…

【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录

文章目录 前言一、几个关键概念1.HTTP无状态性2.Session机制3.Token认证4.JWT 二、通过手机号验证码登录1.前端短信登录界面2.发送短信接口与短信登录接口3.Vue 设置interceptors拦截器4. 服务端验证采用自定义中间件方式实现5. 操作流程及效果图如下&#xff1a; 三、通过第三…

编程从零基础到进阶(更新中)

题目描述 依旧是输入三个整数&#xff0c;要求按照占8个字符的宽度&#xff0c;并且靠左对齐输出 输入格式 一行三个整数&#xff0c;空格分开 输出格式 输出它们按格式输出的效果&#xff0c;占一行 样例输入 123456789 -1 10 样例输出 123456789-1 10 #include "stdio.…

昇思25天学习打卡营第七天|应用实践/热门LLM及其他AI应用/基于MobileNetv2的垃圾分类

心得 本课程主要介绍垃圾分类代码开发的方法。通过读取本地图像数据作为输入&#xff0c;对图像中的垃圾物体进行检测&#xff0c;并且将检测结果图片保存到文件中。 这个AI是我觉很不错的一个想法。比较解决实际的痛点&#xff0c;就是作为普通人来讲&#xff0c;不可能像专…

「安全知识」叉车超速的危害引发的后果是这样的……

在繁忙的工业环境中&#xff0c;叉车作为不可或缺的物流工具&#xff0c;其安全性直接关系到生产效率和员工生命安全。然而&#xff0c;当叉车驾驶员忽视速度限制&#xff0c;超速行驶时&#xff0c;一系列潜在的危险便悄然滋生。本文将讲解叉车超速的危害以及解决措施&#xf…

pip install安装第三方库 error: Microsoft Visual C++ 14.0 or greater is required

原因&#xff1a; 在windows出现此情况的原因是pip安装的库其中部分代码不是python而是使用C等代码编写&#xff0c;我们安装这种类型的库时需要进行编译后安装。 安装Microsoft C Build Tools软件&#xff0c;但这种方式对于很多人来说过于笨重。&#xff08;不推荐&#xf…

脚本新手必看!一文掌握${}在Shell脚本中的神操作!

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 变量引用与默认值📝 字符串操作📝 数组与索引📝 参数扩展与模式匹配⚓️ 相关链接 ⚓️📖 介绍 📖 在编程的广阔世界里,隐藏着无数小巧而强大的工具,它们如同魔法般简化着复杂的操作。今天,我将…

黑马头条-环境搭建、SpringCloud

一、项目介绍 1. 项目背景介绍 项目概述 类似于今日头条&#xff0c;是一个新闻资讯类项目。 随着智能手机的普及&#xff0c;人们更加习惯于通过手机来看新闻。由于生活节奏的加快&#xff0c;很多人只能利用碎片时间来获取信息&#xff0c;因此&#xff0c;对于移动资讯客…

深度学习落地实战:基于UNet实现血管瘤超声图像分割

前言 大家好&#xff0c;我是机长 本专栏将持续收集整理市场上深度学习的相关项目&#xff0c;旨在为准备从事深度学习工作或相关科研活动的伙伴&#xff0c;储备、提升更多的实际开发经验&#xff0c;每个项目实例都可作为实际开发项目写入简历&#xff0c;且都附带完整的代…