MYSQL简介

本文介绍了MySQL的关系型数据库概念,包括行、列、主键等,并详细阐述了不同方式的安装过程,如yum安装、二进制安装和源码编译安装。此外,还提到了MySQL的安全加固措施,如配置文件修改和密码策略。最后,讨论了Ubuntu和CentOS系统的配置文件路径及如何重启服务。
摘要由CSDN通过智能技术生成

1 关系统型数据库相关概念

  • 关系 :关系就是二维表,其中:表中的行、列次序并不重要
  • 行row:表中的每一行,又称为一条记录record
  • 列column:表中的每一列,称为属性,字段,域field
  • 主键PK Primary key:用于惟一确定一个记录的字段,一张表只有一个主键,作用于单列;复合主键,当作用于多列时,多列相加的结果不能相同;主键不能为空,有且仅有一个
  • 唯一键UK:跟主键差不多,可设多个
  • 外键FK:相当于引用,所引用的字段必须有主键或者唯一键
  • 域field:属性的取值范围,如,性别只能是‘男’和‘女’两个值,人类的年龄只能0-150

初始化安装未配置可直接连接,没有限制
mysql -u username # 指定用户连接
-p #输入密码,默认没带密码,安全起见需设置密码

1.1 关联类型

1对1,1对多,多对多关系,主要是指两张表中各自所需对应或引用的列

两张表多对多,可建第三张表包含两张表的主键或唯一键,减少冗余,增大查询效率,按需构建

2 设计范式,建议性

  • 第一范式1NF:除去同类型的字段,同一列中不能有多个值,无重复的列,是对关系模式的基本要求
  • 第二范式2NF:必须满足第一范式,列、属性完全依赖于主键,非主键的字段不能依赖于部分主键,即复合主键的某一部分
  • 第三范式3NF:必须满足第二范式,非主键属性不依赖于其他非主键

主要是为减少冗余,节约空间,反之则提升性能,按需构建

3 mysql不同版本安装

mariadb跟mysql都是同一人开发,不属于同个组织
#linux不同版本默认带有的mysql版本包
centos8:8.0
centos7:默认不带mysql,改为mariadb,5.5
centos6:5.1
ubuntu2004:8.0
ubuntu1804:5.7

一进程多线程结构

3.1 yum安装

基于官方配置yum仓库安装,地址在https://dev.mysql.com/downloads/repo/yum/,选择相关linux版本下载即可,ubuntu选择记得apt仓库,也可选择国内网址

然后安装所下载的rpm包yum install xxx.rpm -y

yum list mysql-server查找所需安装包,将其安装即可

启动服务 systemctl enable --now mysqld 端口号3306

3.2 二进制安装5.7和8.0
#相关准备
#相关包
yum -y install libaio numactl-libs

#创建相关用户,组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql

#下载二进制包,也可在国内镜像站点下载
wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.33-linux-glibc2.12-x86_64.tar.xz
tar xf mysql-5.7.29-linux-glibc2.12-x86_64.tar.gz –C /usr/local     #固定解压路径
cd /usr/local/
ln -s mysql-5.7.29-linux-glibc2.12-x86_64/ mysql
chown -R root.root /usr/local/mysql/                                #更改属性,也可改为mysql,此为真实程序路径

#改环境变量,可以直接输入命令,不用写路径
echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh

#更改配置文件
cp /etc/my.cnf{,.bak}               #安全起见,备份
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql                 #数据库的数据存放位置
skip_name_resolve=1
socket=/data/mysql/mysql.sock       #sock路径  
log-error=/data/mysql/mysql.log     #日志路径
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock       #指定sock文件路径,用于本机连接时用

#初始化设置,创建相关数据库文件
mysqld --initialize --user=mysql --datadir=/data/mysql
#       初始化选项    指定谁的身份运行       数据文件存放路径
#会生成随机root口令,须记住,也可在日志文件中查看,路径在上面有指定,仅用于第一次登录
#下面的是不生成随机root密码,密码为空
mysqld --initialize-insecure --user=mysql --datadir=/data/mysql

#启动脚本,可设置为开机自启
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld            #加入服务列表
service mysqld start

#修改随机密码为指定密码,因随机密码仅用于第一次登录
mysqladmin -uroot -p'LufavlMka6,!'   password 123456
mysqladmin -uroot password 123456

#登录验证
mysql -uroot -p123456
3.3 二进制安装5.6
#其他步骤都差不多
#不同点在于初始化设置,创建相关数据库文件位置
cd /usr/local/mysql/
scripts/mysql_install_db --datadir=/data/mysql --user=mysql
3.4 编译源码安装

对硬件有需求,建议内存6G以上,CPU核数越多越好

以centos7编译安装5.6版本为例

#提前下载源码包
https://downloads.mysql.com/archives/community/         #源码路径,官网地址

#下载相关依赖包,centos7环境
yum -y install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel  gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel perl-Date-Dumper

#创建账号
useradd -r -s /sbin/nologin -d /data/mysql mysql

#创建数据库目录并更改属性
mkdir   /data/mysql
chown mysql.mysql /data/mysql

#解压源码包,路径没有需求
tar xvf   mysql-5.6.51.tar.gz -C /usr/local/src
cd /usr/local/src/ mysql-5.6.51/

#编译,命令较长,加\换行
cmake . \                                  #因文件路径下没有./configure,用cmake代替,同样的功能
-DCMAKE_INSTALL_PREFIX=/app/mysql \        #程序安装路径
-DMYSQL_DATADIR=/data/mysql/ \             #数据库文件路径
-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=/data/mysql/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci

make -j 8 && make install
#如有出错,执行rm -f CMakeCache.txt

#改环境变量,可以直接输入命令,不用写路径
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/mysql --user=mysql

#更改配置文件
cp  -b /app/mysql/support-files/my-default.cnf   /etc/my.cnf             

#初始化设置,创建相关数据库文件
cd /usr/local/mysql/
./scripts/mysql_install_db --datadir=/data/mysql --user=mysql

#启动脚本,可设置为开机自启
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld            #加入服务列表
service mysqld start

#执行安全初始化脚本
mysql_secure_installation

#登录验证
mysql -uroot -p123456

如二进制安装能符合需求就用二进制安装,尽量不用源码编译安装

3.5 基于docker容器安装

需提前安装docker容器

docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.30
#            用户                  端口               密码                 版本

4 mysql简单安全加固

  1. mysql默认自带一个账号root@localhost,管理员权限,初始没有设置密码
  2. 8.0版本以前会有空账号存在,也没有密码,任意字符均可登录,权限稍小
  3. 存在test测试用数据库,谁都可以操作
mysql_secure_installation     #安全加固脚本,用于解决上面三个问题,5.6版本之前
#也可解除远程登录,主机名设置的域名会被dns解析访问

#5.7版本之后密码策略可选择性提高,可用可不用,仅仅用于设置口令
#也可执行下列命令
mysqladmin -uroot password 123456
-u           #指定mysql所需修改密码的用户
password     #修改密码

mysqladmin

#创建新数据库,名称db1
mysqladmin -uroot -p123456 create db1

create      #创建新数据库
drop        #删除数据库,不建议用rm,会删除不干净
ping        #检测mysql是否正常运行,可结合$?
shutdown    #停止运行服务
password    #更改密码
status      #查看数据库状态信息
flush-logs  #刷新日志
4.1 配置文件
4.1.1 centos/rocky

/etc/my.cnf客户端和服务器端均可在该路径下,具体实现可看上面的二进制安装中编辑配置文件

#配置文件格式:
[mysqld]              #给服务器端使用
[mysqld_safe]
[mysqld_multi]
[mysql]               #给客户端使用
[mysqldump]           
[mysqladmin]          #mysqladmin工具使用
[server]
[client]

#改完重启服务
systemctl restart mysqld
4.1.2 ubuntu

路径在/etc/mysql/mysql.conf.d

#改监听ip,路径在/etc/mysql/mysql.conf.d/的mysql.cnf
#bind-address  = 127.0.0.1        将其注释或更改值即可

#重启服务
systemctl restart mysql-service

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值