mysql基础知识 安装及相关

一. mysql的安装

##编译安装
##编译安装5.1X 版本不够需要添加组件
yum -y install gcc gcc-c++ ncurses ncurses-devel bison cmake
cd /opt
tar xf mysql-5.7.17.tar.gz
tar xf boost_1_59_0.tar.gz
mv  -f  boost_1_59_0 /usr/local/boost
cd /opt/mysql-5.7.17/

cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=/usr/local/boost \
-DWITH_SYSTEMD=1 \
/opt/mysql-5.7.17

make && make install  
useradd -M -s /sbin/nologin  mysql
echo '[client]
port = 3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES' > /etc/my.cnf
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile    
source /etc/profile
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

if [ ! -f "/usr/lib/systemd/system/mysqld.service" ]
then
cp -rf /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
fi

systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
netstat -anpt | grep 3307

mysqladmin -u root password "123" 
mysql  -uroot -p123 -P3307
grant all privileges on *.* to 'root'@'%' identified by '123';
show databases;
quit
 

##编译安装 保证mysql-5.7.20压缩包在/opt下
##Mysql安装 5.7.20
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
cd /opt
for i in `ls *`
do 
if [[ $i == *.tar.gz ]]
then
tar xf $i
fi
done
yum -y install \
ncurses \
ncurses-devel \
bison \
cmake
useradd -M -s /sbin/nologin  mysql
cd /opt/mysql-5.7.20/
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8  \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1
make  && make install

echo '[client]
port = 3306
socket=/usr/local/mysql/mysql.sock

[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES' > /etc/my.cnf
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
echo 'export PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile    
source /etc/profile
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data

if [ ! -f "/usr/lib/systemd/system/mysqld.service" ]
then
cp -rf /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/
fi

systemctl daemon-reload
systemctl start mysqld.service
systemctl enable mysqld
netstat -anpt | grep 3307

yum -y install expect 
/usr/bin/expect <<-EOF
spawn mysqladmin -uroot -p password "123"
expect "Enter password:"
send "\r"
expect eof
EOF
/usr/bin/expect <<-EOF
spawn mysql -uroot -p123
expect "mysql> "
send "grant all privileges on *.* to 'root'@'%' identified by '123';\r"
expect "mysql"
send "quit\r"
expect eof
EOF


##修改密码方式二(编译安装)设置密码为123  编译安装改密
sed -i '/[mysqld]/a\skip-grant-tables' /etc/my.cnf
service mysqld restart
mysql
##在sql中粘贴
UPDATE mysql.user SET AUTHENTICATION_STRING = PASSWORD('123') where user='root';
flush privileges;
quit

sed -i '/skip-grant-tables/c\ ' /etc/my.cnf
mysql -uroot -p123
quit
 

##yum安装

##yum安装
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

echo ' [mysql]
name=mysql5.7
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0' >/etc/yum.repos.d/mysql.repo

yum -y install mysql-community-server

systemctl start mysqld
ss -ntap |grep 3306
##查看初始密码,并登录
grep password /var/log/mysqld.log
mysql -u root -p'对应的初始密码'
 

##密码策略查询  yum
SHOW VARIABLES LIKE 'validate_password%';
SET GLOBAL validate_password_policy=LOW;
SET GLOBAL validate_password_mixed_case_count=0;
SET GLOBAL validate_password_number_count=3;
SET GLOBAL validate_password_special_char_count=0;
SET GLOBAL validate_password_length=3;
SHOW VARIABLES LIKE 'validate_password%';

alter user root@'localhost' identified by '123';


##mysql数据库管理
mysql -u root -p123
SHOW DATABASES;


##降低mysql密码复杂度的方法
# 进入数据库
mysql -u root -p
# 验证密码混合情况计数
set global validate_password_mixed_case_count=0; 
# 全局验证密码中数字的数量
set global validate_password_number_count=3; 
# 全局验证密码中特殊字符计数
set global validate_password_special_char_count=0; 
#全局验证密码长度
set global validate_password_length=3;

二. 定义

表:
将不同的记录组织在一起
用来存储具体数据
有关系的几个实体可以一张表用以处理同一任务

数据库:
表的集合,是存储数据的仓库
以一定的组织方式来存储的相互有关的数据集合
是按照数据结构来组织、存储和管理数据的仓库

数据库系统
数据库系统是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成;
用户可以通过DBMS或应用程序操作数据库。

第一代数据库
自20世纪60年代起,第一代数据库系统问世     层次模型与网状模型
是层次模型与网状模型的数据库系统
为统一管理和共享数据提供了有力的支撑
第二代数据库
20世纪70年代初,第二代数据库——关系数据库开始出现          占领数据库应用的主要地位
20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步取代层次与网状模型的数据库,成为行业主流
到目前为止,关系数据库系统仍占领数据库应用的主要地位
第三代数据库   面向对象
自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现
面向对象的数据库系统,实用性强、适应面广
20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面
—些新的元素被添加进主流数据库系统中:例如,Oracle支持的(“关系-对象”数据库模型


主流数据库 
SQL Server(微软公司产品)  Windows操作系统
面向Windows操作系统
简单、易用
Oracle(甲骨文公司产品)
面向所有主流平台
安全、完善,操作复杂
DB2 (IBM公司产品)
面向所有主流平台
大型、安全、完善
MySQL(甲骨文公司收购)    免费、开源、
免费、开源、体积小


数据库分类(关系型数据库、非关系型数据库) 实体-关系 实体(数据对象)、关系和属性
关系型数据库
关系数据库系统是基于关系模型的数据库系统
关系模型的数据结构使用简单易懂的二维数据表
关系模型可用简单的“实体-关系”(E-R)图来表示
E-R图中包含了实体(数据对象)、关系和属性三个要素


实例:现实世界中可区别于其他对象的事件或事物  名词
属性:实例所具有的特性如人具有的姓名 电话性别等 
关系:实体之间的对应关系,动作
实体与实体之间的联系构成关系数据库


数据库管理系统(DBMS) 用来管理数据库的管理系统:数据库的建立维护管理,
将高级指令转换为低级指令(数据库可识别),将低级指令用人能够理解的方式表达出来
便于人去操作


关系型数据库的存储结构         二维表格。
关系型数据库的存储结构是二维表格。
每一行称为一条记录,用来描述一个对象的信息
每一列称为一个字段,用来描述对象的一个属性

 关系型数据库的优缺点
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。

非关系型数据库     不需要固定的表格式
存储数据不以关系模型为依据,不需要固定的表格式
常用的非关系数据库:
Redis、Memcache:缓存型数据库
mongoDB:文档型数据库
Elasticsearch(ES):索引型数据库

非关系型数据库的优点:
1、数据库可高并发读写。
2、对海量数据高效率存储与访问。
nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘
3、数据库具有高扩展性与高可用性。
4、成本低:nosql数据库部署简单,基本都是开源软件。
5、格式灵活
存储数据的格式可以是key/value形式、文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。

非关系型数据库的缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
3、数据结构相对复杂,复杂查询方面稍欠

MySQL数据库
1、MySQL是一款深受欢迎的开源关系型数据库。
2、是Oracle旗下的产品。
3、遵守GPL协议,可以免费使用与修改。
4、特点:
性能卓越、服务稳定
开源、无版权限制、成本低
多线程、多用户
基于C/S(客户端/服务器)架构
安全可靠

 MySQL商业版与社区版       7*24小时的服务
1、MySQL商业版是由MySQL AB公司负责开发与维护,需要付费才能使用。
2、MySQL社区版是由分散在世界各地的MySQL开发者、爱好者一起开发与维护,可以免费使用。
3、两者区别:

商业版组织管理与测试环节更加严格,会比社区版更稳定。
商业版不遵守GPL,社区版遵从GPL可以免费使用。
商业版可获得7*24小时的服务,社区版则没有。

MySQL产品阵营   5.5、5.6、5.7  ,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性能。
1、第一阵营: 5.0-5.1阵营,可说是早期产品的延续。
2、第二阵营: 5.4-5.7阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性
3、第三阵营: 6.0-7.1阵营,就是MySQL Cluster版本,为适应新时代对数据库的集群需求而开发。

关系型数据库和非关系型数据库最主要的区别是:存储结构不同。
关系型数据的存储结构是二维表格
数据库-->数据表-->行(记录):用来描述一个对象的信息
数据库-->数据表-->列(字段):用来描述对象的一个属性
非关系型数据库存储结构不是二维表格,常以key/value(键值对)的方式存储对象信息。
 

三. 来源发展


数据库语法介绍
数据库系统是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成;
自20世纪60年代起,第一代数据库系统问世     层次模型与网状模型
20世纪70年代初,第二代数据库——关系数据库开始出现          占领数据库应用的主要地位
第三代数据库   面向对象
SQL Server(微软公司产品)  Windows操作系统
MySQL(甲骨文公司收购)    免费、开源、
数据库分类(关系型数据库、非关系型数据库) 实体-关系 实体(数据对象)、关系和属性
关系型数据库
实例:现实世界中可区别于其他对象的事件或事物  名词
属性:实例所具有的特性如人具有的姓名 电话性别等 
关系:实体之间的对应关系,动作
实体与实体之间的联系构成关系数据库
数据库管理系统(DBMS) 用来管理数据库的管理系统:数据库的建立维护管理,
将高级指令转换为低级指令(数据库可识别),将低级指令用人能够理解的方式表达出来
便于人去操作
关系型数据库和非关系型数据库最主要的区别是:存储结构不同。
关系型数据的存储结构是二维表格
数据库-->数据表-->行(记录):用来描述一个对象的信息
数据库-->数据表-->列(字段):用来描述对象的一个属性
非关系型数据库存储结构不是二维表格,常以key/value(键值对)的方式存储对象信息。
 MySQL商业版与社区版       7*24小时的服务

数据类型:
类型                 存储内容
tinyint(n)    一字节(一个字节为8位二进制数,即表示的数字为-2^4~2^4-1)
smallint(n)   二字节
mediumint(n)  三字节
int(n)      整形数,四字节
bigint(n)      最大整形数,八字节
float(m,n)      单精度浮点,四个字节,8位精度,m为总位数,n为小数位数
double(m,n)   双精度浮点,八个字节,精度为16位,m为总位数,n为小数位数
char          固定长度的字符类型
varchar      可变长度的字符类型
text          文本
image          图片
decimal       五个有效长度数字,整数部分三位,小数部分两位


unsigned无符号  将增加一倍表示正数的范围,但不再表示负数。
float整数部分有限制,如果插入位数大于设定,会插入失败。而小数部分会舍去多余规定位数的部分
char无论是否有值,都会占用固定长度的字节大小,保存在磁盘上都是4字节。
varchar在保存字符时,默认会加一个隐藏的结束符,因此结束符会多算一个字节。
varchar比char节省磁盘空间。
但varchar类型的数据读写速度比char慢,因为char是连续的磁盘空间,而varchar在多次增删改查中会产生一些磁盘空间碎片。

查看当前服务器中的数据库
show databases
查看数据库中包含的表
show tables
show tables from 库名
查看表的结构(字段)
 进入数据库中       use  库名
查看指定表           desc  表名
或者          desc    库名.表名


SQL语句  结构化查询语言(Structured Query Language) 。
关系型数据库,使用其来管理数据库中数据

 SQL中的名词介绍
数据库:database
表:table,行:row 列:column
索引:index
视图:view
存储过程:procedure
存储函数:function
触发器:trigger
事件调度器:event scheduler,任务计划
用户:user
权限:privilege

SQL语言规范
在数据库系统中,SQL 语句不区分大小写
SQL语句可单行或多行书写,默认以 " ; " 结尾。
关键词不能跨多行或简写。
用空格和TAB 缩进来提高语句的可读性。
子句通常位于独立行,便于编辑,提高可读性。


数据库对象和命名:
数据库的组件(对象):
数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等。
命名规则:
必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)
不要使用MySQL的保留字,如table、select、show、databases。
数据库名、表名、用户名区分大小写

 SQL语言分类
DDL:数据定义语言(Data Definition Language),用于创建数据库对象,如库、表、索引等。
例如:CREATE,DROP,ALTER 等。
DML:数据操纵语言(Data Manipulation Language),用于对表中的数据进行管理。
例如: SELECT、UPDATE、INSERT、DELETE 等。
DQL:数据查询语言( Data Query Languag ),用于从数据表中查找符合条件的数据记录。
例如: SELECT
DCL:数据控制语言(Data Control Language),用于设置或者更改数据库用户或角色权限
例如: GRANT,REVOKE
TCL:事务控制语言(Transaction Control Language),用于管理数据库中的事务。 TCL经常被用于快速原型开发、脚本编程、GUI和测试等方面。
例如: COMMIT,ROLLBACK,SAVEPOINT
 

非关系型数据库的优缺点

优点:

1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。

2、速度快: nosq1可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘:

3、高扩展性:
4、成本低: nosql数据库部署简单,基本都是开源软件。
缺点:
1.不提供sq1支持,学习和使用成本较高:1无事务处理:
2.无事务处理:
3.数据结构相对复杂,复杂查询方面稍欠
4.好多数据写在内存中

Mysql 数据库

日志

数据库日志文件用于备份,恢复,故障定位、分析是最核心的部分

mysgl  oracle 日志有所区别mysql 写一条数据,同步到日志中一条

PS:insert into kyll (id,name,score) values (l,'zhangsan',20);

oracle : 重做日志组

一个组中至少3个日志成员,轮流存储日志

还会有另一个组与之同步/备份
阿里云oss对象存储,一式三份备份(使用重做口志组思想对象存储: 存储大都是一些静态文件,图片、音频、视频不能直接在对象存储中修改数据
域名链接
飞天平台,盘古系统(分布式存储) ,钟道:安全,伏羲: 分布式应用调度女娲: 选举/调度,盘古一式三份
神农:分布式监控
Mysql 存储引擎
myisam innodb
快速读取,不支持事务myisam:更注重写,支持事务innodb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值