06.19 MySQL数据库含义与安装(初级)

第一章 数据库分类

1. 关系型数据库
数据库里有很多二维表格,表一表二表三表一百等等。多张表之间可能有关联。

2. 非关系型数据库
包含多个数据库服务(多实例)3306/3307/3307。
每个数据库服务实例包含多个库。
每个库里包含多个表。
1号仓库:表1表2。
2号仓库:表3表4。
每张表包含多行数据。

3. 数据库产品
MySQL和Oracle数据库,都属于oracle公司
oracle大型传统企业
MySQL互联网企业
access小型(微软)

4. 数据库分类各版本

名称版本
Oracle版本包括Oracle8i、Oracle9i、Oracle10g、Oracle11g、Oracle12c等
MariaDB数据库管理系统是MySQL数据库的一个分支。
微软SQL ServerSQL Server数据库。Access数据库(office套件 php/asp+access)

第二章 关系型数据库

特点: SQL结构化查询语言管理关系型数据库!

1. 二维表
关系型数据库在存储数据时实际就是采用的一张二维表(和word、Excel里表格几乎一样)

2. 市场占有量
市场占有量较大的是MySQL和Oracle数据库,而互联网场景最常用的是MySQL数据库。

3. SQL结构化查询语言
它通过SQL结构化查询语言来存取、管理关系型数据库的数据。

4. 安全一致性高
关系型数据库在保持数据安全和数据一致性方面很强,遵循ACID理论。

第三章 非关系型数据库

NoSQL数据库是not only sql,不仅仅是SQL。
立足油头:只关注高性能、高并发。
Memcached纯内存软件。Rsdis内存也可以持久化
管理NoSQL不再是SQL结构化查询语言
数据表现:不是二维表格了,管理也不是使用SQL语句了。
非关系型数据库(NOSQL)只是小结:

1. 关于数据库的补充
NOSQL数据库不是否定关系数据库,而是作为关系数据库的一个重要补充。

2. 专注高性能高并发
NOSQL数据库为了灵活及高性能、高并发而生,忽略影响高性能、高并发的功能。

3. 典型产品Redis
在NOSQL数据库领域,当今的最典型产品为Redis(持久化缓存)、Mongodb、memcached(纯内存)等。

4. 没有标准的查询语言
NoSQL数据库没有标准的查询语言(SQL),通长使用REST式的数据接口或者查询API。

第四章 MySQL工作流程原理

这里写图片描述

第五章 MySQL安装步骤

  1. yum/rpm不能定制
  2. 5.0产品 configure、make、make install
  3. 5.6产品 ./cmake ,make,make install
  4. 二进制,解压即可
  5. 利用源码编译安装,做成rpm包,然后在yum仓库yum安装*

1. 源码安装包下载

wget https://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.37.tar.gz

2. 安装依赖包

yum install ncurses-devel libaio-devel gcc-c++ -y 

3. cmake安装

yum install  -y cmake

4. 添加用户

useradd -s /sbin/nologin -M mysql

5. 解压安装包

tar xf mysql-5.6.37.tar.gz
cd mysql-5.6.37/

6. cmake配置

cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.6.37 \
-DMYSQL_DATADIR=/application/mysql-5.6.37/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.6.37/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

#更多内容可以参考官方MySQL 5.6的cmake编译参数http://dev.mysql.com/doc/refman/5.6/en/source-#configuration-options.html

7. 编译和编译安装

make && make install

8. 创建软链接

ln -s  /application/mysql-5.6.37/ /application/mysql

9. 拷贝配置文件

cp support-files/my*.cnf /etc/my.cnf

10. 初始化数据库

/application/mysql/scripts/mysql_install_db --basedir=/application/mysql/ --datadir=/application/mysql/data --user=mysql

11. 更改所有者属组授权

chown -R mysql.mysql /application/mysql/

12. 配置启动脚本

cp support-files/mysql.server /etc/init.d/mysqld

13. 更改权限700

chmod 700 /etc/init.d/mysqld

14. 加入开机自启动

chkconfig mysqld on
chkconfig --list mysqld

15. 启动MySQL

sed -i '/socket/a socket = /application/mysql-5.6.37/data/mysql.sock' /etc/my.cnf
/etc/init.d/mysqld start

[root@mysql-51 mysql]# ss -lntup|egrep 3306
tcp    LISTEN     0      80       :::3306                 :::*                   users:(("mysqld",pid=24588,fd=10))

16. 设置MySQL环境变量

echo 'PATH=/application/mysql/bin/:$PATH' >>/etc/profile
tail -1 /etc/profile
source /etc/profile
echo $PATH
mysql -S /application/mysql-5.6.37/data/mysql.sock

17. root用户设置密码

mysqladmin -uroot password '123456' -S /application/mysql/data/mysql.sock
mysql -uroot -p123456 -S /application/mysql/data/mysql.sock

第六章 MySQL多实例安装

1. 先停掉单实例

/etc/init.d/mysqld stop

2. 上传data-5.6-new-book.zip多实例包

unzip data-5.6-new-book.zip
Archive:  data-5.6-new-book.zip
   creating: data/
   creating: data/3306/
  inflating: data/3306/my.cnf        
  inflating: data/3306/mysql         
   creating: data/3307/
  inflating: data/3307/my.cnf        
  inflating: data/3307/mysql  

[root@mysql-51 ~]# tree /data/
/data/
├── 3306
│   ├── my.cnf
│   └── mysql
└── 3307
    ├── my.cnf
    └── mysql

3. 配置文件区别

vimdiff /data/3306/my.cnf /data/3307/my.cnf  #仅有端口之间的区别
mkdir /data/{3306,3307}/data -p
chown -R mysql.mysql /data/

4. 初始化数据库

cd /application/mysql/scripts
./mysql_install_db  --defaults-file=/data/3306/my.cnf --basedir=/application/mysql/ --datadir=/data/3306/data --user=mysql
./mysql_install_db  --defaults-file=/data/3307/my.cnf --basedir=/application/mysql/ --datadir=/data/3307/data --user=mysql
/data/3306/mysql start
/data/3307/mysql start
ss -lntup|egrep 330
mysql -S /data/3306/mysql.sock 
mysql -S /data/3307/mysql.sock

[root@mysql-51 3307]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1243/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1776/master         
tcp6       0      0 :::3306                 :::*                    LISTEN      17831/mysqld        
tcp6       0      0 :::3307                 :::*                    LISTEN      19338/mysqld        
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::22                   :::*                    LISTEN      1243/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1776/master         

第七章 添加3308数据库

mkdir -p /data/3308/data
\cp /data/3306/my.cnf  /data/3308/
\cp /data/3306/mysql  /data/3308/
sed -i 's/3306/3308/g' /data/3308/my.cnf 
sed -i 's/server-id = 6/server-id = 8/g' /data/3308/my.cnf 
sed -i 's/3306/3308/g' /data/3308/mysql
chown -R mysql:mysql /data/3308
chmod 700 /data/3308/mysql
cd /application/mysql/scripts
./mysql_install_db --defaults-file=/data/3308/my.cnf --datadir=/data/3308/data --basedir=/application/mysql --user=mysql
chown -R mysql:mysql /data/3308
egrep "server-id|log-bin" /data/3308/my.cnf 
/data/3308/mysql start
sleep 5
netstat -lnt|grep 3308

第八章 MySQL启动与关闭

1. 单实例启动关闭

##<==最先使用MySQL自带的管理脚本
/etc    /init.d/mysqld stop

##<==第二种为mysqladmin管理方法
mysqladmin -uroot -poldboy123 shutdown  ##这个命令的最大障碍就是必须事先知道密码

##<==第三种为利用系统进程管理方法
kill pid         ##<==这里的pid为数据库服务对应的进程号
killall mysqld   ##<==这里的mysqld是数据库服务对应的进程名字
pill mysqld      ##<==这里的mysqld是数据库服务对应的进程名字

2. 多实例启动关闭

启动3306示例命令服务的命令为/data/3306/mysql start,实际上就是就是msqld_safe加上不同的示例配置文件参数启动,示例如下:
mysqld_safe --default-file=/data/my.cnf 2>&1 >/dev/null &

停止3306示例命令为/data/3306/mysqld stop,实际上就是使用mysqladmin命令方法,示例如下:
mysqladmin -uroot -poldboy123 -S /data/3306/mysql.sock shutdown

第九章 MySQL登录安全优化

1. 交互式

[root@mysql_52 ~]# mysql -uroot -p
Enter password:
[root@db02 ~]# HISTCONTROL=ignorespace   忽略命令开头带空格放入环境变量
[root@db02 ~]#  mysql -uroot -poldboy123

2. 非交互式

[root@mysql_52 ~]# mysql -uroot -poldboy123

3. 写入配置文件

[root@mysql_52 ~]# vim /etc/my.cnf
# For advice on how to change settings please see
# http://dev.mysql.com/doc/refman/5.6/en/server-configuration-defaults.html
# *** DO NOT EDIT THIS FILE. It's a template which will be copied to the
# *** default location during install, and will be replaced if you
# *** upgrade to a newer version of MySQL.
[client]
user=root
password=oldboy123
[root@mysql_52 ~]# chmod 600 /etc/my.cnf   
[root@mysql_52 ~]# ll /etc/my.cnf 
-rw------- 1 root root 1164 Jun 20 16:04 /etc/my.cnf

第十章 MySQL用户密码找回

[root@mysql_52 ~]# mysqld_safe  --skip-grant-table --user=root &
[root@mysql_52 ~]# mysql
mysql> update mysql.user set password=password('oldboy123') where user='root' and host='localhost';
mysql> flush privileges;

第十一章 MySQL注意事项

  • 为root用户设置比较复杂的密码。
  • 删除无用的mysql库内的用户账号,只保留root@localhost以及root@127.0.0.1
  • 删除默认的test数据库
  • 增加用户的时候,授权的权限尽量给小,允许访问的 主机范围最小化。
  • 登录命令行提示不携带密码,而是回车输入密码,使用交互式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值