第十九天:Mysql基础入门

一、关系型数据库基础

1、数据的分类

  结构化的数据      非结构化的数据    半结构化数据

2、关系型数据库 RDBMS

 (1)常用关系数据库

   MySQL: MySQL, MariaDB, Percona Server

  PostgreSQL: 简称为pgsql,EnterpriseDB
  Oracle
  MSSQL Server
  DB2
3、数据库的正规化分析

 (1)第一范式

无重复的列,每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有
多个值或者不能有重复的属性,确保每一列的原子性。除去同类型的字段,就是无重复的列

(2)第二范式

第二范式必须先满足第一范式,属性完全依赖于主键,要求表中的每个行必须可以被唯一地区分,通常
为表加上每行的唯一标识主键PK,非PK的字段需要与整个PK有直接相关性,即非PK的字段不能依赖于部
分主键

(3)第三范式

满足第三范式必须先满足第二范式属性,非主键属性不依赖于其它非主键属性。第三范式要求一个数据
表中不包含已在其它表中已包含的非主关键字信息,非PK的字段间不能有从属关系 

二、安装MySQL

 1、mysql三大分支

  MySQL         https://www.mysql.com/
  Mariadb      http://mariadb.org/
  Percona Server  https://www.percona.com
官方文档:
  https://dev.mysql.com/doc/
  https://mariadb.com/kb/en/  
  https://www.percona.com/software/mysql-database/percona-server
2、安装方式
  程序包管理器管理的程序包
  源代码编译安装
  二进制格式的程序包:展开至特定路径,并经过简单配置后即可使用
3、RPM包安装MySQL

   CentOS 安装光盘

    项目官方:https://downloads.mariadb.org/mariadb/repositories/
    国内镜像:https://mirrors.tuna.tsinghua.edu.cn/mariadb/yum/
        https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/
  CentOS 8:安装光盘直接提供
    mysql-server:8.0
    mariadb-server : 10.3
  CentOS 7:安装光盘直接提供
    mariadb-server:5.5 服务器包
    mariadb 客户端工具包
4、初始化脚本提高安全性  5.6版本
运行脚本:mysql_secure_installation
  设置数据库管理员root口令
  禁止root远程登录
  删除anonymous用户帐号
  删除test数据库
三、MySQL 组成和常用工具
1、客户端程序
mysql: 基于mysql协议交互式或非交互式的CLI工具
mysqldump:备份工具,基于mysql协议向mysqld发起查询请求,并将查得的所有数据转换成
insert等写操作语句保存文本文件中
mysqladmin:基于mysql协议管理mysqld
mysqlimport:数据导入工具
MyISAM存储引擎的管理工具:
  myisamchk:检查MyISAM库
  myisampack:打包MyISAM表,只读
2、服务器端程序
mysqld_safe
mysqld
mysqld_multi 多实例 ,示例:mysqld_multi --example
3、用户账号
mysql用户账号由两部分组成:
  'USERNAME'@'HOST'
  wang@'10.0.0.100'
  wang@'10.0.0.%'
  wang@'%'
4、mysql命令使用格式
mysql [OPTIONS] [database]

 5、服务器端配置文件

6、客户端配置文件

#查看mysql版本
[root@centos8 ~]#mysql -V
mysql Ver 15.1 Distrib 10.3.11-MariaDB, for Linux (x86_64) using readline 5.1
#临时修改mysql提示符
[root@centos8 ~]#mysql -uroot -pcentos --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]>\\_"     #12小进制      
prompt="\\R:\\m:\\s(\\u@\\h) [\\d]>\\_"     #24小时制

vim /etc/my.cnf.d/client.cnf
[client]
user=wang
password=123456
                                                                        
[mysql]
prompt=(\\u@\\h) [\\d]>\\_

7、mysqladmin命令

#查看mysql服务是否正常,如果正常提示mysqld is alive
mysqladmin -uroot -pcentos   ping
#关闭mysql服务,但mysqladmin命令无法开启
mysqladmin -uroot -pcentos shutdown
#创建数据库testdb
mysqladmin -uroot -pcentos   create testdb 
#删除数据库testdb
mysqladmin -uroot -pcentos   drop testdb
#修改root密码
mysqladmin -uroot -pcentos password 'magedu'
#日志滚动,生成新文件/var/lib/mysql/mariadb-bin.00000N
mysqladmin -uroot -pcentos flush-logs

8、mycli

MyCLI 是基于Python开发的MySQL的命令行工具,具有自动完成和语法突出显示功能
9、服务器配置文件

 10、socket 连接说明

 11、关闭mysqld网络连接

只侦听本地客户端, 所有客户端和服务器的交互都通过一个socket文件实现,socket的配置存放
在/var/lib/mysql/mysql.sock) 可在/etc/my.cnf修改
vim /etc/my.cnf
[mysqld]
skip-networking=1
bind_address=127.0.0.1

 

四、通用二进制格式安装 MySQL8.0 

1、安装相关包

yum  -y install libaio numactl-libs ncurses-compat-libs

2、创建用户和组

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

3、准备程序文件

wget http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.31-linuxglibc2.12-x86_64.tar.gz
tar xf mysql-5.7.31-linux-glibc2.12-x86_64.tar.gz -C /usr/local
cd /usr/local/
ln -s mysql-5.7.31-linux-glibc2.12-x86_64/ mysql
chown -R root.root /usr/local/mysql/

4、准备环境变量

echo 'PATH=/usr/local/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
. /etc/profile.d/mysql.sh

5、准备配置文件

cp /etc/my.cnf{,.bak}
vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
skip_name_resolve=1
socket=/data/mysql/mysql.sock        
log-error=/data/mysql/mysql.log
pid-file=/data/mysql/mysql.pid
[client]
socket=/data/mysql/mysql.sock

6、初始化数据库文件并提取root密码

#/data/mysql   会自动生成,但是/data/必须事先存在
mkdir -pv /data/mysql

7、密码

 生成随机密码

mysqld --initialize --user=mysql --datadir=/data/mysql
grep password /data/mysql/mysql.log

  生成空密码

mysqld --initialize-insecure --user=mysql --datadir=/data/mysql

8、准备服务脚本和启动

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
service mysqld start

9、修改口令

#修改前面生成的随机密码为指定密码
mysqladmin -uroot -p'LufavlMka6,!'   password magedu
#修改前面生成的空密码为指定密码
mysqladmin -uroot   password magedu

五、基于DOCKER容器创建MYSQL

#docker run --name mysql -d -p 3306:3306 -e 
MYSQL_ROOT_PASSWORD=123456 mysql:5.7.30

#mysql -uroot -p123456 -h127.0.0.1

 

六、MYSQL多实例安装

1、多实例常见的配置方案

  单一的配置文件、单一启动程序多实例部署方式
  多配置文件、多启动程序部署方式
2、安装mariadb/mysql   
  
yum -y install mariadb-server

3、准备三个实例的目录

mkdir -pv  /mysql/{3306,3307,3308}/{data,etc,socket,log,bin,pid}

chown -R mysql.mysql /mysql

tree -d /mysql/

4、生成数据库文件

mysql_install_db --user=mysql --datadir=/mysql/3306/data
mysql_install_db --user=mysql --datadir=/mysql/3307/data
mysql_install_db --user=mysql --datadir=/mysql/3308/data

5、准备配置文件

#vim /mysql/3306/etc/my.cnf

[mysqld]
port=3306
datadir=/mysql/3306/data
socket=/mysql/3306/socket/mysql.sock
log-error=/mysql/3306/log/mysql.log
pid-file=/mysql/3306/pid/mysql.pid

#重复上面步骤设置3307,3308
[root@centos8 ~]#sed 's/3306/3307/' /mysql/3306/etc/my.cnf >
/mysql/3307/etc/my.cnf
[root@centos8 ~]#sed 's/3306/3308/' /mysql/3306/etc/my.cnf >
/mysql/3308/etc/my.cnf

6、准备启动脚本

vim /mysql/3306/bin/mysqld
略..
#增加执行权限 chmod
+x /mysql/3306/bin/mysqld

7、启动、关闭服务

/mysql/3306/bin/mysqld start

/mysql/3308/bin/mysqld stop

8、登录实例

mysql -h127.0.0.1 -P3308

mysql -uroot -S /mysqldb/3306/socket/mysql.sock

9、修改root密码

mysqladmin -uroot -S /mysql/3306/socket/mysql.sock password '***'
10、开机启动
vi /etc/rc.d/rc.local  

#在最后一行加下面内容
for i in {3306..3308};do /mysql/$i/bin/mysqld start;done
[root@centos8 ~]#chmod +x /etc/rc.d/rc.local

 

posted @ 2024-02-11 22:55  djyhello  阅读(20)  评论(0编辑  收藏  举报