MySQL历史 1979年:TcX公司 Monty Widenius,Unireg 1996年:发布MySQL1.0,Solaris版本,Linux版本 1999年:MySQL AB公司,瑞典 2003年:MySQL 5.0版本,提供视图、存储过程等功能 2008年:sun 收购 2009年:oracle收购sun 2009年:Monty成立MariaDB
MySQL和MariaDB 官方网址: https://www.mysql.com/ http://mariadb.org/ 官方文档 https://dev.mysql.com/doc/ https://mariadb.com/kb/en/ 版本演变: MySQL:5.1 --> 5.5 --> 5.6 --> 5.7 MariaDB:5.5 -->10.0--> 10.1 --> 10.2 --> 10.3
数据库的发展史 萌芽阶段-----文件系统 使用磁盘文件来存储数据 初级阶段-----第一代数据库 出现了网状模型、层次模型的数据库 中级阶段-----第二代数据库 关系型数据库和结构化查询语言 高级阶段------新一代数据库 “关系-对象”型数据库
文件管理系统的缺点 编写应用程序不方便 数据冗余不可避免 应用程序依赖性 不支持对文件的并发访问 数据间联系弱 难以按用户视图表示数据 无安全控制功能
数据库管理系统的优点 相互关联的数据的集合 较少的数据冗余 程序与数据相互独立 保证数据的安全、可靠 最大限度地保证数据的正确性 数据可以并发使用并能同时保证一致性
数据库管理系统 数据库是数据的汇集,它以一定的组织形式存于存储介质上 DBMS是管理数据库的系统软件,它实现数据库系统的各种功能。是数据库系统的核心 DBA:负责数据库的规划、设计、协调、维护和管理等工作 应用程序指以数据库为基础的应用程序
数据库管理系统的基本功能 数据定义 数据处理 数据安全 数据备份
数据库系统的架构 单机架构 大型主机/终端架构 主从式架构(C/S) 分布式架构
关系型数据库 关系 :关系就是二维表。并满足如下性质: 表中的行、列次序并不重要 行row:表中的每一行,又称为一条记录 列column:表中的每一列,称为属性,字段 主键(Primary key):用于惟一确定一个记录的字段 域domain:属性的取值范围,如,性别只能是‘男’和‘女’两个值
关系数据库 RDBMS: MySQL: MySQL, MariaDB, Percona Server PostgreSQL: 简称为pgsql,EnterpriseDB Oracle: MSSQL: DB2: 事务transaction:多个操作被当作一个整体对待 ACID: A: 原子性 C:一致性 I: 隔离性 D:持久性
实体-联系模型E-R 实体Entity 客观存在并可以相互区分的客观事物或抽象事件称为实体。 在E-R图中用矩形框表示实体,把实体名写在框内 属性 实体所具有的特征或性质 联系 联系是数据之间的关联集合,是客观存在的应用语义链 实体内部的联系:指组成实体的各属性之间的联系。如职工实体中,职工号和部门经理号之间有一种关联关系 实体之间的联系:指不同实体之间联系。例学生选课实体和学生基本信息实体之间 实体之间的联系用菱形框表示
联系类型 联系的类型 一对一联系(1:1) 一对多联系(1:n) 多对多联系(m:n)
数据三要素 数据结构: 包括两类,一类是与数据类型、内容、性质有关的对象,比如关系模型中的域、属性和关系等;另一类是与数据之间联系有关的对象,它从数据组织层表达数据记录与字段的结构 数据的操作: 数据提取:在数据集合中提取感兴趣的内容。(SELECT) 数据更新:变更数据库中的数据。(INSERT、DELETE、UPDATE 数据的约束条件 :是一组完整性规则的集合 实体(行)完整性 Entity integrity 域(列)完整性 Domain Integrity 参考完整性 Referential Integrity
简易数据规划流程 第一阶段:收集数据,得到字段 收集必要且完整的数据项 转换成数据表的字段 第二阶段:把字段分类,归入表,建立表的关联 关联:表和表间的关系 分割数据表并建立关联的优点 节省空间 减少输入错误 方便数据修改 第三阶段: 规范化数据库
数据库的正规化分析 RDMBS设计范式基础概念 设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小 目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴德斯科范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多规范要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)即可
范式 1NF:无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。除去同类型的字段,就是无重复的列 说明:第一范式(1NF)是对关系模式的基本要求,不满足第一范式(1NF)的数据库就不是关系数据库 2NF:属性完全依赖于主键,第二范式必须先满足第一范式,要求表中的每个行必须可以被唯一地区分。通常为表加上一个列,以存储各个实例的唯一标识PK,非PK的字段需要与整个PK有直接相关性 3NF:属性不依赖于其它非主属性,满足第三范式必须先满足第二范式。第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系
SQL概念 SQL: Structure Query Language 结构化查询语言 SQL解释器: 数据存储协议:应用层协议,C/S S:server, 监听于套接字,接收并处理客户端的应用请求 C:Client 程序接口 CLI GUI 应用编程接口 ODBC:Open Database Connectivity JDBC:Java Data Base Connectivity
约束 约束:constraint,表中的数据要遵守的限制 主键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;必须提供数据,即NOT NULL,一个表只能有一个 惟一键:一个或多个字段的组合,填入的数据必须能在本表中唯一标识本行;允许为NULL,一个表可以存在多个 外键:一个表中的某字段可填入的数据取决于另一个表的主键或唯一键已有的数据 检查:字段值在一定范围内
基本概念 索引:将表中的一个或多个字段中的数据复制一份另存,并且此些需要按特定次序排序存储 关系运算: 选择:挑选出符合条件的行 投影:挑选出需要的字段 连接:表间字段的关联
数据模型 数据抽象: 物理层:数据存储格式,即RDBMS在磁盘上如何组织文件 逻辑层:DBA角度,描述存储什么数据,以及数据间存在什么样的关系 视图层:用户角度,描述DB中的部分数据 关系模型的分类: 关系模型 基于对象的关系模型 半结构化的关系模型:XML数据
MySQL和MariaDB 官方网址: https://www.mysql.com/ http://mariadb.org/ 官方文档 https://dev.mysql.com/doc/ https://mariadb.com/kb/en/ 版本演变: MySQL:5.1 --> 5.5 --> 5.6 --> 5.7 MariaDB:5.5 -->10.0--> 10.1 --> 10.2 --> 10.3
MariaDB的特性 插件式存储引擎:也称为“表类型”,存储管理器有多种实现版本,功能和特性可能均略有差别;用户可根据需要灵活选择,Mysql5.5.5开始innoDB引擎是MYSQL默认引擎 MyISAM ==> Aria innoDB ==> XtraDB 存储引擎比较: https://docs.oracle.com/cd/E17952_01/mysql-5.5-en/storage-engines.html 单进程,多线程 诸多扩展和新特性 提供了较多测试组件 开源
存储引擎 MyISAM引擎特点: 不支持事务 表级锁定 读写相互阻塞,写入不能读,读时不能写 只缓存索引 不支持外键约束 不支持聚簇索引 读取数据较快,占用资源较少 不支持MVCC(多版本并发控制机制)高并发 崩溃恢复性较差 MySQL5.5.5前默认的数据库引擎 适用场景:只读(或者写较少)、表较小(可以接受长时间进行修复操作) MyISAM引擎文件: tbl_name.frm: 表格式定义 tbl_name.MYD: 数据文件 tbl_name.MYI: 索引文件 InnoDB引擎特点: 支持事务,适合处理大量短期事务 行级锁 读写阻塞与事务隔离级别相关 可缓存数据和索引 支持聚簇索引 崩溃恢复性更好 支持MVCC高并发 从MySQL5.5后支持全文索引 从MySQL5.5.5开始为默认的数据库引擎
InnoDB数据库文件
所有InnoDB表的数据和索引放置于同一个表空间中
表空间文件:datadir定义的目录下
数据文件:ibddata1, ibddata2, ...
每个表单独使用一个表空间存储表的数据和索引
启用:innodb_file_per_table=ON
两类文件放在数据库独立目录中
数据文件(存储数据和索引):tb_name.ibd
表格式定义:tb_name.frm
其它存储引擎 Performance_Schema:Performance_Schema数据库 Memory :将所有数据存储在RAM中,以便在需要快速查找参考和其他类似数据的环境中进行快速访问。适用存放临时数据。引擎以前被称为HEAP引擎 MRG_MyISAM:使MySQL DBA或开发人员能够对一系列相同的MyISAM表进行逻辑分组,并将它们作为一个对象引用。适用于VLDB(Very Large Data Base)环境,如数据仓库 Archive :为存储和检索大量很少参考的存档或安全审核信息,只支持SELECT和INSERT操作;支持行级锁和专用缓存区 Federated联合:用于访问其它远程MySQL服务器一个代理,它通过创建一个到远程MySQL服务器的客户端连接,并将查询传输到远程服务器执行,而后完成数据存取,提供链接单独MySQL服务器的能力,以便从多个物理服务器创建一个逻辑数据库。非常适合分布式或数据集市环境
其它数据库引擎 BDB:可替代InnoDB的事务引擎,支持COMMIT、ROLLBACK和其他事务特性 Cluster/NDB:MySQL的簇式数据库引擎,尤其适合于具有高性能查找要求的应用程序,这类查找需求还要求具有最高的正常工作时间和可用性 CSV:CSV存储引擎使用逗号分隔值格式将数据存储在文本文件中。可以使用CSV引擎以CSV格式导入和导出其他软件和应用程序之间的数据交换 BLACKHOLE :黑洞存储引擎接受但不存储数据,检索总是返回一个空集。该功能可用于分布式数据库设计,数据自动复制,但不是本地存储 example:“stub”引擎,它什么都不做。可以使用此引擎创建表,但不能将数据存储在其中或从中检索。目的是作为例子来说明如何开始编写新的存储引擎
其它存储引擎 MariaDB支持的其它存储引擎: OQGraph SphinxSE TokuDB Cassandra CONNECT SQUENCE
管理存储引擎 查看mysql支持的存储引擎: show engines; 查看当前默认的存储引擎: show variables like '%storage_engine%'; 设置默认的存储引擎: vim /etc/my.conf [mysqld] default_storage_engine= InnoDB;
查看库中所有表使用的存储引擎
Show table status from db_name;
查看库中指定表的存储引擎
show table status like ‘tb_name‘;
show create table tb_name;
设置表的存储引擎:
CREATE TABLE tb_name(... ) ENGINE=InnoDB;
ALTER TABLE tb_name ENGINE=InnoDB;
MySQL中的系统数据库 mysql数据库:是mysql的核心数据库,类似于sql server中的master库,主要负责存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息 PERFORMANCE_SCHEMA:MySQL 5.5开始新增的数据库,主要用于收集数据库服务器性能参数,库里表的存储引擎均为PERFORMANCE_SCHEMA,用户不能创建存储引擎为PERFORMANCE_SCHEMA的表 information_schema数据库:MySQL 5.0之后产生的,一个虚拟数据库,物理上并不存在。information_schema数据库类似与“数据字典”,提供了访问数据库元数据的方式,即数据的数据。比如数据库名或表名,列类型,访问权限(更加细化的访问方式)
安装Mariadb Mariadb安装方式: 1、源代码:编译安装 2、二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用 3、程序包管理器管理的程序包 CentOS安装光盘 项目官方: https://downloads.mariadb.org/mariadb/repositories/
Rpm安装mariadb 安装和使用MariaDB Rpm包安装 CentOS 7:安装光盘直接提供 mariadb-server 服务器包 mariadb 客户端工具包 CentOS 6 提高安全性 mysql_secure_installation 设置数据库管理员root口令 禁止root远程登录 删除anonymous用户帐号 删除test数据库
实例:在centos 6上安装MySQL: yum install mysql
下次开机自动启动:
chkconfig mysqld on
启用服务:
service mysqld start
默认端口:3306
在centos 7上安装mariadb: yum install mariadb-server
下次开机自动启动:
systemctl enable mariadb-service
启用服务:
systemctl start mariadb
查看端口是否启用:
ss -tnl
3306端口
注意在安装完之后mysq的安全性非常差,建议立即添加密码提升安全性运行自带的脚本程序: root@localhostcentos7 ~]# mysql_secure_installation
Enter current password for root (enter for none):
OK, successfully used password, moving on...
Set root password? [Y/n] y 设置用户密码
New password:
Re-enter new password:
Remove anonymous users? [Y/n] y 删除匿名用户
... Success!
Disallow root login remotely? [Y/n] n 是否禁用远程root登录
... skipping.
Remove test database and access to it? [Y/n] y 是否删除测试数据库
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reload privilege tables now? [Y/n] y 是否重新加载权限表 (说白了就是现在是否生效)
... Success!
mysqld:帮助
? (?) Synonym for `help'. 帮助
clear (\c) Clear the current input statement. 清除当前输入的语句
connect (\r) Reconnect to the server. Optional arguments are db and host. 连接到服务器,可选参数 db和主机
delimiter (\d) Set statement delimiter. 设置语句分隔符
edit (\e) Set statement delimite.
ego (\G) Send command to mysql server, display result vertically. 向mysql服务器发送命令,垂直显示结果
exit (\q) Exit mysql. Same as quit. 退出
go (\g) Send command to mysql server. 发送命令到mysq服务器
help (\h) Display this help. 帮助
nopager (\n) Disable pager, print to stdout. 禁用寻呼机,打印到stdout
notee (\t) Don't write into outfile. 不要写输出文件
pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
print (\p) Print current command.
prompt (\R) Change your mysql prompt.
quit (\q) Quit mysql.
rehash (#) Rebuild completion hash.
source (.) Execute an SQL script file. Takes a file name as an argument.
status (\s) Get status information from the server.
system (!) Execute a system shell command.
tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
use (\u) Use another database. Takes database name as argument.
charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
warnings (\W) Show warnings after every statement.
nowarning (\w) Don't show warnings after every statement.
MariaDB程序 客户端程序: mysql: 交互式的CLI工具 mysqldump: 备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成insert等写操作语句保存文本文件中 mysqladmin:基于mysql协议管理mysqld mysqlimport: 数据导入工具 MyISAM存储引擎的管理工具: myisamchk:检查MyISAM库 myisampack:打包MyISAM表,只读 服务器端程序 mysqld_safe mysqld 获取默认设置:mysqld --print-defaults mysqld_multi:多实例 ,示例:mysqld_multi --example
用户账号 mysql用户账号由两部分组成: USERNAME'@'HOST‘ 说明: HOST限制此用户可通过哪些远程主机连接mysql服务器 支持使用通配符: % 匹配任意长度的任意字符 172.16.0.0/255.255.0.0 或 172.16.%.% _ 匹配任意单个字符
Mysql 客户端
mysql使用模式:
交互式模式:
可运行命令有两类:
客户端命令:
\h, help
\u,use
\s,status
!,system
服务器端命令:
SQL, 需要语句结束符;
脚本模式:
mysql –uUSERNAME -pPASSWORD < /path/somefile.sql
mysql> source /path/from/somefile.sql
mysql客户端可用选项:
-A, --no-auto-rehash 禁止补全
-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数据库创建库文件: vim haha.sql create database memeda; show databases;
运行msyql:
mysql -uroot -p <haha.sql
或者:
vim hehe.sql
create database heheda;
show databases;
进入mysql数据库在数据库中运行
MariaDB [(none)]> \. hehe.sql
socket地址 服务器监听的两种socket地址: ip socket: 监听在tcp的3306端口,支持远程通信 unix sock: 监听在sock文件上,仅支持本机通信 如:/var/lib/mysql/mysql.sock) 说明:host为localhost,127.0.0.1时自动使用unix sock
服务器端配置 服务器端(mysqld):工作特性有多种配置方式 1、命令行选项: 2、配置文件:类ini格式 集中式的配置,能够为mysql的各应用程序提供配置信息 [mysqld] [mysqld_safe] [mysqld_multi] [mysql] [mysqldump] [server] [client] 格式:parameter = value 说明:_和- 相同 0,OFF,TRUE意义相同,1,ON,FALSE意义相同
配置文件 配置文件: 后面覆盖前面的配置文件,顺序如下: /etc/my.cnf Global选项 /etc/mysql/my.cnf Global全局选项 SYSCONFDIR/my.cnf Global选项 $MYSQL_HOME/my.cnf Server-specific 选项 --defaults-extra-file=path ~/.my.cnf User-specific 选项 获取可用参数列表: mysqld --help --verbose
MairaDB配置 侦听3306/tcp端口可以在绑定有一个或全部接口IP上 vim /etc/my.cnf [mysqld] skip-networking=1 关闭网络连接,只侦听本地客户端, 所有和服务器的交互都通过一个socket实现,socket的配置存放在/var/lib/mysql/mysql.sock) 可在/etc/my.cnf修改
执行命令 运行mysql命令:默认空密码登录 mysql>use mysql mysql>select user();查看当前用户 mysql>SELECT User,Host,Password FROM user; 登录系统:mysql –uroot –p 客户端命令:本地执行 mysql> help 每个命令都完×××式和简写格式 mysql> status 或 \s 服务端命令:通过mysql协议发往服务器执行并取回结果 每个命令都必须命令结束符号;默认为分号 SELECT VERSION();
实例: 二进制安装mariadb 创建用户账号: useradd -r -d /data/mysqldb -s /sbin/nologin mysql
存放数据二进制文件路径:
mkdir -pv /usr/local
解压:
tar xvf mariadb-10.2.15-linux-x86_64.tar.gz -C /usr/local/
cd /usr/local
ln -s mariadb-10.2.15-linux-x86_64/ mysql
chown -R root:root mysql/
创建一个变量:
echo PATH=/usr/local/mysql/bin:$PATH > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh
创建逻辑卷:
添加了一个20G的硬盘方mariadb:
添加新的硬盘时,识别硬盘:
echo '- - -' > /sys/class/scsi_host/host2/scan
创建卷组:
vgcreate vg1 /dev/sdb
创建一个20G的逻辑卷:
lvcreate -n lv_mysql -l 100%FREE vg1 将卷组用完 名叫lv_mysql
创建系统格式(简称格式化):
mkfs.xfs /dev/vg1/lv_mysql
挂载:
mkdir /mysqld
vim /etc/fstab
UUID=e7ebc73d-a785-4524-95f2-4321599b2ef4 /mysqld xfs defaults 0 0
自动挂载:
mount -a
设置权限:
chown mysql:mysql /mysqld
chmod 770 /mysql
安装数据库:
cd /usr/local/mysql
scripts/mysql_install_db --datadir=/data/mysqldb --user=mysql
出现Ok 就没有问题
修改数据库的配置文件:
cd /usr/local/mysql
cp support-files/my-huge.cnf /etc/my.cnf
编辑配置文件:
vim /etc/my.cnf
[mysqld]
datadir=/data/mysqldb 加此行
创建服务启动脚本:
复制启用脚本的文件:
cd /usr/local/mysql
cp support-files/mysql.server /etc/init.d/mysqld
创建一个启用名叫:mysqld
chkconfig --add mysqld
service mysqld start
查看:
chkconfig --list
数据库安全加固:
mysql_secure_installation
实例:源码编译安装mariadb 准备环境变量 echo 'PATH=/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh /etc/profile.d/mysql.sh 生成数据库文件 cd /app/mysql/ scripts/mysql_install_db --datadir=/data/mysqldb/ --user=mysql 准备配置文件 cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf 准备启动脚本 cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld 启动服务 chkconfig --add mysqld ;service mysqld star
安装包
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssl-devel ncurses-devel libxml2-devel
做准备用户和数据目录
mkdir /data
useradd –r –s /bin/false –m –d /data/mysqldb/ mysql
tar xvf mariadb-10.2.12.tar.gz
cmake 编译安装
cd mariadb-10.2.12/
编译选项:
https://dev.mysql.com/doc/refman/5.7/en/source-configuration-options.html
源码编译安装Mariadb:
解决依赖关系:
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake libevent-devel gnutls-devel libaio-devel openssl-devel ncurses-devel libxml2-devel
创建一个数据库用户:
useradd -r -s /sbin/nologin maria
解压:
tar xvf mariadb-10.2.15.tar.gz
创建数据存放路径:
mkdir -pv /data/mysqldb
chown maria.maria /data/mysqldb
安装:
cmake .
-DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/data/mysqldb/
-DSYSCONFDIR=/etc
-DMYSQL_USER=mysql
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PARTITION_STORAGE_ENGINE=1
-DWITHOUT_MROONGA_STORAGE_ENGINE=1
-DWITH_DEBUG=0
-DWITH_READLINE=1
-DWITH_SSL=system
-DWITH_ZLIB=system
-DWITH_LIBWRAP=0
-DENABLED_LOCAL_INFILE=1
-DMYSQL_UNIX_ADDR=/app/mysql/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
make -j 4
make install
创建环境变量:
cho PATH=/app/mysql/bin:$PATH > /etc/profile.d/mysql.sh
让变量生效:
. /etc/profile.d/mysql.sh
生成数据库:
cd /app/mysql
scripts/mysql_install_db --datadir=/data/mysqldb/ --user=mysql --basedir=/app/mysql
准备配置文件:
cp /app/mysql/support-files/my-huge.cnf /etc/my.cnf
配置文件添加执行权限:
setfacl -R -m u:mysql:rwx /app/mysql/
服务脚本:
cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld
启用服务:
service mysqld start
实例:在一个主机上跑多个多mariadb: mkdir -pv /mysqldb/{3306,3307,3308}/{etc,data,log,pid,socket} chown -R /mysqldb
生成数据库:
mysql_install_db --datadir=/mysqldb/3306/data --user=mysql
mysql_install_db --datadir=/mysqldb/3307/data --user=mysql
mysql_install_db --datadir=/mysqldb/3308/data --user=mysql
复制文件:
cp /etc/my.conf /mysqldb/3306/etc
cp /etc/my.conf /mysqldb/3307/etc
cp /etc/my.conf /mysqldb/3308/etc
修改配置文件:
vim /mysqldb/3306/etc/my.cnf
[mysqld]
port=3306
datadir=/mysqldb/3306/data
socket=/mysqldb/3306/socket/mysqld.socket
[mysqld_safe]
log-error=/mysqldb/3306/log/mariadb.log
pid-file=/mysqldb/3306/pid/mariadb.pid
#!includedir /etc/my.cnf.d
vim /mysqldb/3307/my.cnf
[mysqld]
port=3307
datadir=/mysqldb/3307/data
socket=/mysqldb/3307/socket/mysqld.socket
[mysqld_safe]
log-error=/mysqldb/3307/log/mariadb.log
pid-file=/mysqldb/3307/pid/mariadb.pid
#!includedir /etc/my.cnf.d
vim /mysqldb/3308/etc/my.cnf
[mysqld]
port=3308
datadir=/mysqldb/3308/data
socket=/mysqldb/3308/socket/mysqld.socket
[mysqld_safe]
log-error=/mysqldb/3308/log/mariadb.log
pid-file=/mysqldb/3308/pid/mariadb.pid
#!includedir /etc/my.cnf.d
修改启动脚本:
导入文件mysql文件更改端口的文件路径:
3306端口的主机:
vim /mysqldb/3306/mysql
port=3306
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/bin"
mysql_basedir="/mysqldb"
3307端口的主机:
vim /mysqldb/3307/mysql
port=3307
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/bin"
mysql_basedir="/mysqldb"
3308端口的主机:
vim /mysqldb/3308/mysql
port=3308
mysql_user="root"
mysql_pwd=""
cmd_path="/usr/bin"
mysql_basedir="/mysqldb"
添加执行权限:
chmod 700 /mysqldb/3306/mysql
chmod 700 /mysqldb/3307/mysql
chmod 700 /mysqldb/3308/mysql
启用mariadb:可全部启用mariadb
/mysqldb/3306/mysqld start
/mysqldb/3306/mysqld start
/mysqldb/3306/mysqld start
连接mariadb时:
mysql -S /mysqldb/3306/socket/mysql.sock
mysql -S /mysqldb/3307/socket/mysql.sock
mysql -S /mysqldb/3308/socket/mysql.sock
那么如何停用mysql呢
vim /mysqldb/3308/mysql
${cmd_path}/mysqladmin -u ${mysql_user} -S ${mysql_sock} shutdown
#${cmd_path}/mysqladmin -u ${mysql_user} -p${mysql_pwd} -S ${mysql_sock} shutdown
/mysqldb/3308/mysql stop