非结构化的数据:非结构化的数据越来越多,就是不定长、无固定格式的数据。
Database:数据库是数据的汇集,它以一定的组织形式存于存储介质上。
DBMS:Database Management System,是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心。
DBA:Database Administrator,负责数据库的规划、设计、协调、维护和管理等工作。
Application:应用程序,指以数据库为基础的应用程序。
参考:https://www.yuque.com/blogking/linux/ud18vxqsn6afzfy6
分层结构由 IBM 在 20 世纪 60 年代开发,并在早期大型机 DBMS 中使用。
记录的关系形成了一个树状模型。这种结构简单,但缺乏灵活性,因为这种关系仅限于一对多关系。
1964 年通用电气 GE 公司的 Charles Bachman 成功地开发出世界上第一个网状数据库 IDS ( 集成数据存储),IDS 具有数据模式和日志的特征,只能在 GE 主机运行。
4、关系型数据库中多表联合查询效率低下。比如查询整个公司的四月的营业额( 张经理 + 李经理+xxx )。
Relational Database Management System,关系模型最初由 IBM 公司的英国计算机科学家埃德加·科德(Edgar F. Codd)于 1969 年描述,1974 年,IBM 开始开发系统 R,这是一个开发 RDBMS 原型的研究项目。
然而,第一个商业上可用的 RDBMS 是甲骨文,于 1979 年由关系软件(现为甲骨文公司)发布。
关系 Relational:关系就是 二维数据表,其中:表中的行、列次序并不重要
列 column:表中的每一列,称为 属性,字段,域 field
主键 Primary key:PK ,一个或多个字段的组合,用于唯一确定一个记录的字段,一张表只有一个主键, 主键字段不能为空 NULL。
唯一键 Unique key:一个或多个字段的组合,用于唯一确定一个记录的字段,一张表可以有多个 UK 唯一键,而且 UK 唯一键字段可以为 NULL。
PostgreSQL:简称为 pgsql,EnterpriseDB
DB-Engines Ranking - popularity ranking of database management systems
E-R 模型 即 实体-关系模型 :E-R 模型就是描述数据库存储数据的结构模型
对于大型公司开发项目:需要根据产品经理的设计,先使用建模工具
如:power designer,db desinger 等这些软件来 画出实体-关系模型( E-R 模型)
实体 Entity:客观存在并可以相互区分的客观事物或抽象事件称为实体即表,在 E-R 图中用 矩形 表示实体,把实体名写在框内。( 类似表 )
属性 Attribute:实体所具有的特征或性质,描述实体里面的单个信息, 使用 椭圆形 表示。( 类似字段 )
联系 Relationship:描述了实体的属性之间的关联规则。( 关系 )
实体内部的联系:指组成同一个实体内的各属性之间的联系。如职工实体中,职工号和部门经理号之间有一种关联关系
实体之间的联系:指不同实体之间的属性的联系。例:学生选课实体和学生基本信息实体之间
参考:开放平台
属性:类似数据库表中的字段。
联系:类似描述数据表之间的关系。( 指实体之间的联系 )
(1)地址实体 包括 用户编号,省,市,地区,收件人,联系电话,是否默认地址。
(2)用户实体 包括 用户编号,用户名称,昵称,用户密码,手机号,邮箱,头像,用户级别
(3)购物车实体 包括 购物车编号,用户编号,商品编号,商品数量,图片文件 url
(4)订单实体 包括 订单编号,收货人,收件人电话,总金额,用户编号,付款方式,送货地址,下单时间
(5)订单详情实体 包括 订单详情编号,订单编号,商品名称,商品编号,商品数量。
其实,任何一个基于数据库的应用项目,都可以通过这种先建立 ER 模型,再转换成数据表的方式,完成数据库的设计工作,创建ER模型不是目的,目的是把业务逻辑梳理清楚,设计出优秀的数据库。
我建议你不是为了建模而建模,要利用创建 ER 模型的过程来整理思路,这样创建 ER 模型才有意义。
一对一:指实体之间的关系是一一对应的,比如个人与身份证信息之间的关系就是一对一的关系。一个人只能有一个身份证信息,一个身份证也只属于一个人。
相反另外一边的实体通过这个关系,则只能对应唯一的一边的实体。
比如说:我们新建一个班级表,而每个班级都有多个学生,每个学生则对应一个班级,班级对学生就是一对多的关系。
比如在进货模块中,供货商与超市之间的关系就是多对多的关系,一个供货商可以给多个超市供货,一个超市也可以从多个供货商那里采购商品。
再比如一个选课表,有许多科目,每个科目有很多学生选,而每个学生又可以选择多个科目,这就是多对多的关系。
主键 和 外键 是关系型数据库中非常重要的概念,用于描述表之间的关系。下面是它们的区别和联系:
主键 是数据表中的一列或一组列,用于唯一地标识每一行记录。主键必须是唯一的,不能重复,并且不能为 NULL 。通常情况下,主键会自动递增,从而保证每一行记录的唯一性。主键可以由单个列或多个列组成,多列主键也称为复合主键。
外键 是一个表中的列,它指向另一个表的主键列,用于描述表之间的关系。外键可以为空,也可以有重复值。外键在建立表之间的关系时非常重要,它确保了表之间的数据完整性,同时也是查询和更新表之间数据的基础。
主键和外键之间的联系 在于外键关联到另一个表的主键上。外键通常是在一张表中,引用另一张表的主键,这样就能够建立表与表之间的关联关系。主键和外键都是用来维护表之间的关系的,主键作为表中每一行记录的唯一标识,而外键作为表与表之间的桥梁,建立了表之间的关联关系。
总的来说,主键和外键是非常重要的概念,它们在关系型数据库的设计和使用中起着至关重要的作用。主键和外键的建立需要根据具体的业务需求和数据库设计原则进行,以确保数据的完整性和一致性。
开发工程师 CRUD( 增加 Create、查询 Retrieve 或 Read、更新 Update、 删除 Delete)
数据更新:变更数据库中的数据。INSERT、DELETE、UPDATE
参考:https://www.cnblogs.com/daniumeng/p/8715911.html
CDM 模型:概念数据库模型,建立在传统的ER图模型的理论上,主要的三大元素有实体型,属性 和 联系。
LDM 模型:在 CDM 的基础上,对于每个实体定义了主键和外键,需要进行范式化处理。LDM 是为了尽可能详细的描述数据,但是不考虑数据在物理上是如何实现的。
PDM 模型:主要涉及到的基本概念有: 表、列、试图、主键、候选键、储存过程、触发器、索引、完整性检查约束。
第一范式、第二范式、第三范式、BCNF范式详解-腾讯云开发者社区-腾讯云
数据库-第一范式、第二范式、第三范式、BC范式、第四范式简析-腾讯云开发者社区-腾讯云
数据库规范化,又称数据库或资料库的正规化、标准化,是数据库设计中的一系列原理和技术,以减少数据库中数据冗余,增进数据的一致性。
关系模型的发明者 埃德加·科德 最早提出这一概念,并于 1970 年代初定义了第一范式、第二范式和第三范式的概念。
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,不同的规范要求被称为不同范式,各种范式呈递次规范,越高的范式数据库冗余越小。
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式 (4NF)和第五范式(5NF,又称完美范式)。
在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。
规则是死的,人是活的,所以范式是否必须遵守,要看业务需要而定。
参考:简单了解第一,二,三范式(图文详细)_第一范式-CSDN博客
范式:范式是符合某一种级别的关系模式的集合,表示一个关系内部属性之间的联系何合理化程度。
概念:指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性
无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性,确保每一列的原子性。除去同类型的字段,就是无重复的列。
说明:第一范式(1NF)是对关系模式的 基本要求,不满足第一范式(1NF)的数据库就不是关系数据库。
概念:在第一范式(1NF)的基础上,实体的属性完全函数依赖于关键字(复合主键),不能存在部分依赖函数于主关键字(复合主键)
第二范式:必须先满足第一范式,属性完全依赖于主键,要求表中的每个行必须可以被唯一地区分,通常为表加上每行的唯一标识主键 PK。非 PK 的字段需要与整个 PK 有直接相关性,即非 PK 的字段不能只依赖于部分主键。
参考:mysql复合主键是什么意思-mysql教程-PHP中文网
复合主键 是指 数据库表的主键含有一个以上的字段组成,即多字段主键;复合主键是主键的一种,与主键具有相同的功能和定义。
因为数据表 name 字段可能出现重名的情况,所以要加上 id 字段来保证记录的唯一性。
满足第三范式 必须先满足第二范式属性,非主键属性不依赖于其它非主键属性。
第三范式:要求一个数据表中不包含已在其它表中已包含的非主关键字信息,非 PK 的字段间不能有从属关系。
SQL:Structure Query Language,( 结构化查询语言 )是 1974 年由 Boyce 和 Chamberlin 提出的一个通用的、功能极强的关系性数据库语言。
S:Server, 监听于套接字,接收并处理客户端的应用请求
ODBC:Open Database Connectivity
JDBC:Java Data Base Connectivity
约束:Constraint,表中的数据在数据类型限定的基础上额外要遵守的限制
主键 primary key:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即 NOT NULL,一个表只能有一个。
惟一键 unique:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为 NULL,一个表可以存在多个。
默认值 default:当不填写字段对应的值会使用默认值,如果填写时以填写为准。
外键 foreign key:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据。
物理层:数据存储格式,即 RDBMS 在磁盘上如何组织文件。
逻辑层:DBA 角度,描述存储什么数据,以及数据间存在什么样的关系。
MySQL 的历史可以追溯到 1979 年,它的创始人 叫作 Michael Widenius,他在开发一个报表工具的时候,设计了一套 API,后来他的客户要求他的 API 支持 SQL 语句,他直接借助于 mSQL(当时比较牛)的代码,将它集成到自己的存储引擎中。但是他总是感觉不满意,萌生了要自己做一套数据库的想法。
直到 1996 年,MySQL 1.0 发布,Michael Widenius 的大女儿的简称就是 MY,Michael Widenius 大概也是把 MySQL 当成自己的女儿一样来对待,仅仅过了几个月的时间,1996 年 10 月 MySQL 3.11.1 当时发布了 Solaris 的版本,一个月后,Linux 的版本诞生,从那时候开始,MySQL 慢慢的被人所接受。
1999年,Michael Widenius 成立了 MySQL AB 公司,MySQL 由个人开发转变为团队开发,2000 年使用 GPL 协议开源。
2001 年,MySQL 生命中的大事发生了,那就是存储引擎 InnoDB 的诞生!Oracle 在 2005 年收购了 InnoDB,只不过 InnoDB 一直以来都只能作为第三方插件供用户选择。直到现在,MySQL 可以选择的众多存储引擎中,InnoDB 依然是第一选择。
2008 年 1 月,MySQL AB 公司被 Sun 公司以 10 亿美金收购,MySQL 数据库进入 Sun 时代。Sun 为 MySQL 的发展提供了绝佳的环境,2008 年 11 月,MySQL 5.1 发布,MySQL 成为了最受欢迎的小型数据库。
2009 年 4 月,Oracle 公司以 74 亿美元收购 Sun 公司,MySQL 也随之进入 Oracle 时代。
2010 年 12 月,MySQL 5.5 发布,Oracle 终于把 InnoDB 做成了 MySQL 默认的存储引擎,MySQL 从此进入了辉煌时代。
然而,从那之后,Oracle 对 MySQL 的态度渐渐发生了变化,Oracle 虽然宣称 MySQL 依然尊少 GPL 协议,但却暗地里把开发人员全部换成了 Oracle 自己人,开源社区再也影响不了 MySQL 发展的脚步,真正有心做贡献的人也被拒之门外,MySQL 随时都有闭源的可能……
看着自己辛苦养大的 MySQL 被 Oracle 搞成这样,Michael Widenius 非常失望,决定在 MySQL 走向闭源前,将 MySQL 进行分支化,依然是使用了自己小女儿的名字 MariaDB( 玛莉亚DB )。
MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用 GPL 授权许可 MariaDB 的目的是完全兼容 MySQL,包括 API 和命令行,使之能轻松成为 MySQL 的代替品。在存储引擎方面,使用 XtraDB 来代替 MySQL 的 InnoDB。
MariaDB 由 MySQL 的创始人 Michael Widenius 主导,由开源社区的大神们进行开发。因此,大家都认为,MariaDB 拥有比 MySQL 更纯正的 MySQL 血脉。
最初的版本更新与 MySQL 同步,相对 MySQL5 以后的版本,MariaDB 也有相应的 5.1~5.5 的版本。后来 MariaDB 终于摆脱了 MySQL ,它的版本号直接从 10.0 开始,以自己的步伐进行开发,当然,还是可以对 MySQL 完全兼容。
1979 年:TcX 公司 Monty Widenius,Unireg
1996 年:发布 MySQL1.0,Solaris 版本,Linux 版本
2003 年:MySQL 5.0 版本,提供视图、存储过程等功能
2009 年:Oracle 公司以 74 亿美元收购 Sun 公司
MariaDB Foundation - MariaDB.org
Open Source Database Software Support & Services | Percona
Percona Server for MySQL - Open Source MySQL Server Alternative
MySQL:5.1 --> 5.5 --> 5.6 --> 5.7 --> 8.0
MariaDB:5.1 -->5.5 --> 10.0--> 10.1 --> 10.2 --> 10.3 --> 10.4 --> 10.5 --> 10.6
MySQL 被 Sun 收购后, 搞了个过渡的 6.0 版本, 没多久就下线了, 后来被 Oracle 收购后, 终于迎来了像样的 5.6
版本, 之后就是 5.7, 8.0 版本.
由于 6.0 版本号已被用过, 7.x 系列版本专用于 NDB Cluster, 因而新版本号从 8.0 开始.
插件式存储引擎:也称为 "表类型",存储管理器有多种实现版本,功能和特性可能均略有差别;用户可根据需要灵活选择,MySQL 5.5.5 开始 innoDB 引擎是 MYSQL 默认引擎
InnoDB ==> XtraDB
二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用
CentOS6 默认光盘镜像仓库 带有 MySQL 5.1 版本
CentOS7 默认光盘镜像仓库 不再包含 MySQL 软件,而存在 MariaDB 5.5 版本 。
CentOS8 默认光盘镜像仓库 即包含 MySQL 软件,也包含 MariaDB 10.3 软件。
[root@centos6 ~] yum info mariadb-server[root@centos7 ~] yum info mariadb-server[root@centos8 ~] yum info mysql-server[root@centos8 ~] yum info mariadb-server
项目官方:Download MariaDB Server - MariaDB.org
国内镜像:Index of /mariadb/yum/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
Index of /mysql/yum/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
// "基于 YUM 源安装"// "CentOS7" 默认可以安装 MariaDB ( 光盘镜像仅包含 MariaDB )// "CentOS8" 默认可以安装 MySQL ( 光盘镜像两者都包含 )[root@centos7 ~] yum install mariadb-server -y[root@centos8 ~] yum install mysql-server -y// "启用 数据库 服务"[root@centos7 ~] systemctl enable --now mariadb[root@centos8 ~] systemctl enable --now mysqld
"连接数据库"// 使用 Yum 命令基于光盘镜像源安装的数据库服务// 默认可以直接使用 mysql 客户端工具连接, 密钥为空 ( "不安全" )[root@centos7 ~] mysql[root@centos8 ~] mysql
演示:基于 MySQL 官网下载软件包( 自定义安装 MySQL 版本 )
Linux 小技巧:CentOS 7 利用 Yum 源安装 MySQL5.7
// 清华源[root@centos7 ~] tee /etc/yum.repos.d/mysql.repo <<EOF[mysql]name=mysql5.7baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/gpgcheck=0EOF[root@centos7 ~] yum clean all[root@centos7 ~] yum makecache// 安装软件包 ( mysql-community 综合软件包 )[root@centos7 ~] yum -y install mysql-community-server[root@centos7 ~] systemctl enable --now mysqld[root@centos7 ~] netstat -nltp// 使用 mysql 客户端验证[root@centos7 ~] mysqlERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)// 查看日志 ("过滤出临时密码")[root@centos7 ~] cat /var/log/mysqld.log | grep password2023-12-28T17:30:19.636282Z 1 [Note] A temporary password is generated for root@localhost: 9JuVv4/?tejN2023-12-28T17:30:34.693639Z 2 [Note] Access denied for user 'root'@'localhost' (using password: NO)// 修改初始密码方法 1[root@centos7 ~] mysql -uroot -p'9JuVv4/?tejN' ( 注意: 密码建议使用引号包含 )// 注意: "使用初始密码登录无法执行操作, 需要修改密码后才可以!!!"mysql> statusERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.# 修改简单密码不符合密码策略mysql> alter user root@'localhost' identified by '123456';ERROR 1819 (HY000): Your password does not satisfy the current policy requirements# 修改为复杂密码mysql> alter user root@'localhost' identified by 'P@ssw0rd123456';Query OK, 0 rows affected (0.00 sec)mysql> status--------------mysql Ver 14.14 Distrib 5.7.44, for Linux (x86_64) using EditLine wrapperConnection id:3Current database:Current user:root@localhostSSL:Not in useCurrent pager:stdoutUsing outfile:''Using delimiter:;Server version:5.7.44Protocol version:10Connection:Localhost via UNIX socketServer characterset:latin1Db characterset:latin1Client characterset:utf8Conn. characterset:utf8UNIX socket:/var/lib/mysql/mysql.sockUptime:2 min 19 secThreads: 1 Questions: 11 Slow queries: 0 Opens: 107 Flush tables: 1 Open tables: 100 Queries per second avg: 0.079--------------mysql> exit// 修改初始密码方法 2[root@centos7 ~] mysqladmin -uroot -p'9JuVv4/?tejN' password 'P@ssw0rd123456'mysqladmin: [Warning] Using a password on the command line interface can be insecure.Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
常用 MySQL 客户端命令( MySQL 客户端 内置命令 )
statusGet status information from the server.
systemExecute a system shell command.
sourceExecute an SQL script file. Takes a file name as an argument.
mysql -uroot -p'P@ssw0rd123456'// 注意事项mysql> help ( 'MySQL 客户端' 内置命令无需以分号结尾 )mysql> show databases; ( 'MySQL 服务端' 命令则需要使用分号结尾 )
// 方法 1// 主线程 + 次线程 = 线程总和pstree -p | grep mysqld// 方法 2cat /proc/10538/status | grep Threads
范例:CentOS 7 利用 Yum 源安装 MariaDB
Download MariaDB Server - MariaDB.org
[root@centos7 ~] cat /etc/yum.repos.d/mariadb.repo[mariadb]name = MariaDBbaseurl = https://mirrors.nju.edu.cn/mariadb/yum/10.5/centos7-amd64gpgkey = https://mirrors.nju.edu.cn/mariadb/yum/RPM-GPG-KEY-MariaDBgpgcheck = 1[root@centos7 ~] yum install MariaDB-server -y[root@centos7 ~] systemctl enable --now mariadb.service[root@centos7 ~] mysqlMariaDB [(none)]> status
[root@ubuntu1804 ~] apt install mysql-server[root@ubuntu1804 ~] systemctl status mysql.service[root@ubuntu1804 ~] mysqlmysql> status
// CentOS7 默认安装的 MariaDB 数据库 "不安全"mysql ( 空密码登录 )mysql -uxxx ( 任意用户名可登录 )su - wangj mysql -uadb ( 普通用户任意登录 )
运行脚本:mysql_secure_installation
2. 禁止 root 远程登录
3. 删除 anonymous 用户帐号
4. 删除 test 数据库
范例:针对 MySQL5.6 前版本 进行 安全加固( 重要 )
[root@centos7 ~] file `which mysql_secure_installation`/usr/bin/mysql_secure_installation: POSIX shell script, ASCII text executable// 执行数据库 "安全加固脚本"[root@centos7 ~] mysql_secure_installation回车y设置口令重复口令yyyy
// "验证"[root@centos7 ~] mysql[root@centos7 ~] mysql -uxxx[root@centos7 ~] mysql -uroot -p'P@ssw0rd123456'MariaDB [(none)]> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema |+--------------------+3 rows in set (0.00 sec)MariaDB [(none)]> select user,host from mysql.user;+------+-----------+| user | host |+------+-----------+| root | 127.0.0.1 || root | ::1 || root | localhost |+------+-----------+3 rows in set (0.00 sec)MariaDB [(none)]> exitBye
mysqldump:备份工具,基于 mysql 协议向 mysqld 发起查询请求,并将查得的所有数据转换成 insert 等写操作语句保存文本文件中
mysqladmin:基于 mysql 协议管理 mysqld
mysqld_multi 多实例,示例:mysqld_multi --example
wang@'10.0.0.100'
wang@'10.0.0.%'
HOST:限制此用户可通过哪些远程主机连接 MySQL 服务器( 重点 )
示例: 172.16.0.0/255.255.0.0 或 172.16.%.%
_ 匹配任意单个字符,相当于shell中?
注意:如下三行信息 表示三个不同的用户,因为 MySQL 的 用户账号 是用 user@host 组合使用的。
root@127.0.0.1( 表示 root 用户 只能在 MySQL 服务端 本机 进行登录 )
root@::1( 表示 root 用户 只能在 MySQL 服务端 本机 进行登录 )
root@localhost( 表示 root 用户 只能在 MySQL 服务端 本机 进行登录 )
// 检索并显示 mysql.user 表中的 user 和 host 列的内容# mysql 数据库# user 数据表MariaDB [(none)]> select user,host from mysql.user;// 或者进入 mysql 数据库// 然后查看 user 数据表MariaDB [mysql]> use mysql;MariaDB [mysql]> select user,host from user;
客户端命令:本地执行,每个命令都有 完整形式 和 简写格式。
mysql> \h, helpmysql> \u, usemysql> \s, statusmysql> \!, system
服务端命令:通过 mysql 协议发往服务器执行并取回结果,命令末尾都必须使用 ; 命令结束符号,默认为 分号。
mysql> SELECT VERSION();
mysql -uUSERNAME -pPASSWORD < /path/somefile.sql
cat /path/somefile.sql | mysql -uUSERNAME -pPASSWORD
// 脚本模式
mysql> source /path/from/somefile.sql
-u, --user= # 用户名, 默认为 root
-h, --host= # 服务器主机, 默认为 localhost
-p, --passowrd= # 用户密码, 建议使用 -p, 默认为空密码
-P, --port= # 服务器端口
-S, --socket= # 指定连接 socket 文件路径
-D, --database= # 指定默认数据库
-C, --compress # 启用压缩
-e "SQL" # 执行 SQL 命令
-V, --version # 显示版本
-v --verbose # 显示详细信息
--print-defaults # 获取程序默认使用的配置
mysql -uroot -p
mysql> use mysql // 切换数据库mysql> select database(); // 查看当前所在数据库mysql> select user(); # 查看当前用户mysql> SELECT User,Host,Password FROM user;mysql> system clear # 清屏mysql> ^D # Ctrl + D 退出Bye
范例:MySQL 的配置文件,修改提示符( Linux 小技巧:修改 MySQL 提示符 )
// 查看 MySQL 版本[root@centos8 ~] mysql -Vmysql Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1// 临时修改 MySQL 提示符[root@centos8 ~] mysql -uroot -pP@ssw0rd123456 --prompt="\\r:\\m:\\s(\\u@\\h) [\\d]>\\_"// 临时修改 MySQL 提示符[root@centos8 ~] export MYSQL_PS1="\\r:\\m:\\s(\\u@\\h) [\\d]>\\_"// 持久修改 MySQL 提示符[root@centos8 ~] vim /etc/my.cnf.d/mysql-clients.cnf[mysql]prompt="\\r:\\m:\\s(\\u@\\h) [\\d]>\\_"[root@centos8 ~] mysql --print-defaults -v[root@centos8 ~] mysql10:29:30(root@localhost) [(none)]> use mysql;10:29:34(root@localhost) [mysql]> exit
[root@centos7 ~] vim /etc/my.cnf.d/client.cnf[client]user=rootpassword=P@ssw0rd123456[mysql]prompt=(\\u@\\h) [\\d]>\\_[root@centos7 ~] mysql --print-defaults -v[root@centos7 ~] mysql
// 查看 mysql 服务是否正常, 如果正常提示 mysqld is alivemysqladmin -uroot -pP@ssw0rd123456 ping ( 可以用来做探针监控数据库状态 )// 关闭 mysql 服务 ( 但 mysqladmin 命令无法开启 )mysqladmin -uroot -pP@ssw0rd123456 shutdown// 开启 mysql 服务systemctl start mariadb// 创建数据库 testdbmysqladmin -uroot -pP@ssw0rd123456 create testdb// 删除数据库 testdbmysqladmin -uroot -pP@ssw0rd123456 drop testdb// 修改 root 密码mysqladmin -uroot -pP@ssw0rd123456 password 'magedu'// 日志滚动, 生成新文件 /var/lib/mysql/mariadb-bin.00000Nmysqladmin -uroot -pP@ssw0rd123456 flush-logs
2.3.4.5)mycli( MySQL 花哨客户端工具 )
MyCLI 是 MySQL,MariaDB 和 Percona 的命令行界面
[root@centos7 ~] yum -y install epel-release
[root@centos7 ~] yum -y install python-pip
[root@centos7 ~] yum -y install python-devel
[root@centos7 ~] yum clean all
[root@centos7 ~] pip install mycli
// Ubuntu 安装
[root@ubuntu1804 ~] apt -y install mycli
[root@ubuntu1804 ~] mycli -u root -S /var/run/mysqld/mysqld.sock
[root@centos7 ~] mycli -u root -p P@ssw0rd123456
[root@centos7 ~] mycli -u root -p P@ssw0rd123456 -S /var/run/mysqld/mysqld.sock
2、配置文件:类ini格式,集中式的配置,能够为 mysql 的各应用程序提供配置信息
/etc/mysql/my.cnf # Global 选项
~/.my.cnf # User-specific 选项
// 持久修改 MySQL 提示符[root@centos8 ~] vim /etc/my.cnf.d/mysql-clients.cnf[mysql]prompt="\\r:\\m:\\s(\\u@\\h) [\\d]>\\_"[root@centos8 ~] mysql --print-defaults -v[root@centos8 ~] mysql10:29:30(root@localhost) [(none)]> use mysql;10:29:34(root@localhost) [mysql]> exit
[mysqld_safe]
[mysqld_multi]
[mysql]
[mysqldump]
[server]
[client]
1, ON, TRUE意义相同, 0, OFF, FALSE 意义相同, 无区分大小写
ip socket:监听在 tcp 的 3306 端口,支持远程通信 ,侦听 3306/tcp 端口可以在绑定有一个或全部接口 IP 上
unix sock:监听在 sock 文件上,仅支持本机通信,如:/var/lib/mysql/mysql.sock )
说明:host 为 localhost 时自动使用 unix sock
mysql> SHOW VARIABLES LIKE 'port';+---------------+-------+| Variable_name | Value |+---------------+-------+| port | 3306 |+---------------+-------+1 row in set (0.01 sec)# MySQL8.0 增加了一个 33060/tcp 端口# Port 33060 is the default port for the MySQL Database Extended Interface (the MySQL X Protocol).mysql> SHOW VARIABLES LIKE 'mysqlx_port';+---------------+-------+| Variable_name | Value |+---------------+-------+| mysqlx_port | 33060 |+---------------+-------+1 row in set (0.00 sec)
只侦听本地客户端, 所有客户端和服务器的交互都通过一个 socket 文件实现,socket 的配置存放在 /var/lib/mysql/mysql.sock ) 可在 /etc/my.cnf 修改
vim /etc/my.cnf[mysqld]skip-networking=1bind_address=127.0.0.1