数据库-day02

一.课程回顾

1.数据库的产品介绍
    RDBMS:oracle,mysql,PG,mssql
    NOSQL:Redis,MongoDB,es,memcached
2.MySQL分支
    oracle
    mariadb
    percona
    rds,polardb,OB
3.MySQL版本选择
    GA 6-12月
    5.6:5.6.38    2017-9-13
    5.7:5.7.20    2017-9-13
4.安装-初始化
    5.6:/usr/local/mysql/scripts/mysql_install_db
    5.7:mysqld --initialize-insecure
5.c/s
    tcp/ip:mysql -uroot -p123 -h10.0.0.51 -p3306
    socket:mysql -uroot -p123 -S /tmp/mysql.sock
6.MySQLD的程序结构
    连接层:提供链接协议,用户验证,提供链接线程
    sql层:语法,语义,权限,解析,优化,执行
    存储引擎层:从磁盘上提取数据
7.逻辑结构
    库:库名字,库属性
    表:表名,列,行,属性
8.物理结构
    宏观:
        库:目录
        表:  myisam:frm,myi,myd
            innodb:frm ibd
    微观:
        段
        区
        页
9.用户权限
    create user 添加用户
    drop user  删除用户
    alter user  更改用户
    mysql.user 查找用户
    grant  创建并授权
    remoke  回收权限

二.8.0.16版本二进制安装

1.上传安装包并且解压
2.修改版本名称,并授权
    ![图片.png](https://upload-images.jianshu.io/upload_images/18572205-64364106e507c763.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

跨版本升级:

1.不要挎多个版本
2.5.7之前的升级  mysql_upgrade(需要执行这条命令)
5.6升级到5.7
    1.安装新版本软件
    2.改软连接或配置文件中的basedir
    3.用5.7的软件启动5.6的数据
    4.mysql_upgrade -uroot -p123 -S /tmp/mysql.sock
    注意:备份
  5.7之后的直接下载版本  然后启动 数据自动升级
    升级之前必须停掉数据库进行备份
跨版本升级:
    1.不要挎多个版本
    2.看好版本

三.MySQL的连接管理

1.MySQL linux中的连接协议
socket:本地登录,提前创建好localhost相关用户
TCPIP:远程登录,提前创建好远程用户
2.MySQL客户端
MySQL:[root@db01 ~]# mysql -uroot -p -S /tmp/mysql.sock
                      mysql -uoldboy -p -h10.0.0.51 -P3306

注意:
1.不要连接时把密码写到命令行上
2.写博客的时候,要脱敏
sqlyog:
navicat:

四.MySQL的启动关闭

1.sysv
service mysqld start/stop/restart/status
2.systemctl
systemctl start/stop/restart/status mysqld
3.手工启动方式(维护性操作时)
/etcinit.d/mysqld  ----》 /usr/local/mysql/bin/mysqld_safe ------>/usr/local/mysql/bin/mysqld
例子:管理员用户root@'localhost' 密码丢失
1.通过跳过授权表+跳过TCP/IP的参数。启动数据库
    --skip-grant-tables :跳过授权表,链接层关闭验证模块。
    --skip-networking:关闭链接层TCP/IP,只留socket文件链接
关闭数据库:systemctl stop mysqld.service
跳过授权表登录:mysqld_safe --skip-grant-tables --skip-networking &
2.无密码登录
3.修改密码
    flush privileges;
    alter user  root@'localhost' identified by '123';
 4.正常重启数据库
systemctl restart mysqld
图片.png
4.mysql的其他关闭方式

mysqladmin -uroot -p -S /tmp/mysql.sock shutdown

五.初始化配置

1.配置文件(/etc/my.cnf)*****
[root@db01 ~]# mysqld --help --verbose |grep my.cnf
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
叠加关系 如果四个配置文件都有  就会执行最后一个文件~/.my.cnf
自己定义默认位置:mysqld或者mysqld_safe 加入 --defaults-file=/opt/oldboy/conf
02.配置文件内容
1.影响范围
    服务端启动和工作  
    本地客户端连接(socket)
2.内容结构
    标签:
        服务端:[mysqld] [mysqld_safe] [server]
        客户端:[mysql] [mysqldump] [client]
    配置参数:
        参数名=值
#服务端
[mysqld]  ... 标签
user=mysql
basedir=/usr/local/mysql  ....软件的路径
datadir=/data/mysql/data  ....目录的路径
#服务端的套接字文件
socket=/tmp/mysql.sock
 服务端参数修改  需要重启
#客户端
[mysql]
socket=/tmp/mysql.sock
2.命令行***
3.编译安装*

六.多实例

1.规划
01.端口:3307,3308,3309
02.数据:/data/330{7..9}/data    
03.配置文件:/data/330{7..9}/my.cng
    Port=3307/3308/3309
    server_id=7/8/9
    datadir=/data/330{7..9}/data 
    socket=/tmp/mysql330{7..9}.sock
2.干活
01.创建相关目录并授权
    mkdir -p /data/330{7..9}/data
    chown -R mysql.mysql /data/*
02.初始化数据
   mv /etc/my.cnf /tmp
    mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3307/data  
    mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3308/data  
    mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/data/3309/data
03.准备配置文件
cat > /data/3307/my.cnf < /data/3308/my.cnf < /data/3309/my.cnf <
 04.准备启动脚本
cat > /etc/systemd/system/mysqld3307.service < /etc/systemd/system/mysqld3308.service < /etc/systemd/system/mysqld3309.service <
5.启动多实例并验证状态
[root@db01 ~]# systemctl start mysqld3307
[root@db01 ~]# systemctl start mysqld3308
[root@db01 ~]# systemctl start mysqld3309
[root@db01 ~]# netstat -tulnp|grep mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      8692/mysqld         
tcp6       0      0 :::3307                 :::*                    LISTEN      8912/mysqld         
tcp6       0      0 :::3308                 :::*                    LISTEN      8932/mysqld         
tcp6       0      0 :::3309                 :::*                    LISTEN      8980/mysqld         
小作业:
mysql_multi 实现多实例环境
https://dev.mysql.com/doc/refman/5.7/en/mysqld-multi.html

你可能感兴趣的:(数据库-day02)