名词 | 解释 |
---|---|
数据库服务器 | 运行着数据库应用的设备 |
数据库实例 | 数据库服务器上启动的数据库服务,例如:mysql服务 |
数据库 | 表的管理单元 |
表 | 字段、记录 |
记录|实体 | 字段的管理单元 |
字段|属性 | 字段名,字段类型、长度,字段约束组成 |
类型 | 字符,数字,日期 |
约束 | NULL NOTNULL等 |
DB的全称是database,即数据库的意思。数据库实际上就是一个文件集合,是一个存储数据的仓库,数据库是按照特定的格式把数据存储起来,用户可以对存储的数据进行增删改查操作;
SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。
数据查询语言(DQL:Data Query Language): 其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词。
数据操作语言(DML:Data Manipulation Language): 其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
数据控制语言(DCL):(Data Control Language): 它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
数据定义语言(DDL):(Data Define Language): 其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
SQL包含四个部分:
- DDL语句,数据库定义语言:数据库,表,视图,索引,存储过程,函数,例如:CREATE
- DML语句,数据库操纵语言:插入数据INSERT、删除数据DELETE、更新数据UPDATE
- DQL语句,数据库查询语句:查询数据SELECT
- DCL语句,数据库控制语言:控制用户的访问权限GRANT、REVOLE
非关系型数据库主要是基于“非关系模型”的数据库(由于关系型太大,所以一般用“非关系型”来表示其他类型的数据库)
非关系型模型比如有:
存储的数据是一列列的。关系型数据库以一行作为一个记录,列模型数据库以一列为一个记录。(这种模型,IO很快,主要是一些分布式数据库)
关系型数据库:
优点:
1、易于维护:都是使用表结构,格式一致;
2、使用方便:SQL语言通用,可用于复杂查询;
3、复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询;
4、学习成本低。
缺点:
1、读写性能比较差,尤其是海量数据的高效率读写;
2、固定的表结构,灵活度稍欠;
3、高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈。吞吐量
非关系型数据库
优点:
1、格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛.
2、速度快:可以使用硬盘或者内存作为载体,而关系型数据库只能使用硬盘;redis数据库单线程10W
3、成本低:数据库部署简单,基本都是开源软件。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理;
关系型数据库:Oralce Mysql DB2 PostgreSQL SqlServer
非关系型数据库:Redis MongDB Memcache
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL:5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 8.0
MariaDB: 5.0 5.1 5.2 5.3 5.4 5.5 10.0 10.1 10.2 10.3 10.4 10.5(有限代替MySQL8) 10.6……10.10代替MySQL8
//防火墙
systemctl stop firewalld && systemctl disable firewalld
//selinux
setenforce 0
sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
getenforce
//公网
ping -W1 -c3 www.baidu.com
yum -y erase mariadb mariadb-server mariadb-libs mariadb-devel
userdel -r mysql
rm -rf /etc/my*
rm -rf /var/lib/mysql
yum -y erase mysql* mariadb* //卸载可能存在的残留
yum -y install ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make glibc automake autoconf cmake
useradd -M -g mysql -s /sbin/nologin mysql
groupadd mysql
mkdir -p /usr/local/{data,mysql,log,tmp} //创建目录
chown -R mysql:mysql /usr/local/{data,mysql,log,tmp} //更改所有者、属组
wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.24.tar.gz //官网下载源码包
下载到windows本机,lrzsz上传到服务器
tar -xf mysql-boost-5.7.40.tar.gz //解压源码包
cd mysql-5.7.40 //进入解压源码包出来的目录
cmake . \
-DWITH_BOOST=boost/boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/usr/local/data \
-DINSTALL_MANDIR=/usr/share/man \
-DMYSQL_TCP_PORT=3306 \
-DMYSQL_UNIX_ADDR=/usr/local/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DEXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_SSL=system \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1
make && make install //make后可以加上-j 用更多的cpu去更快的跑完
提示:boost也可以使用如下指令自动下载,如果不下载boost压缩包,把下面的这一条添加到配置中第二行
-DDOWNLOAD_BOOST=1/
参数详解:
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ 安装目录
-DSYSCONFDIR=/etc \ 配置文件存放 (默认可以不安装配置文件)
-DMYSQL_DATADIR=/usr/local/mysql/data \ 数据目录 错误日志文件也会在这个目录
-DINSTALL_MANDIR=/usr/share/man \ 帮助文档
-DMYSQL_TCP_PORT=3306 \ 默认端口
-DMYSQL_UNIX_ADDR=/usr/local/tmp/mysql.sock \ sock文件位置,用来做网络通信的,客户端连接服务器的时候用
-DDEFAULT_CHARSET=utf8 \ 默认字符集。字符集的支持,可以调
-DEXTRA_CHARSETS=all \ 扩展的字符集支持所有的
-DDEFAULT_COLLATION=utf8_general_ci \ 支持的
-DWITH_READLINE=1 \ 上下翻历史命令
-DWITH_SSL=system \ 使用私钥和证书登陆(公钥) 可以加密。 适用与长连接。坏处:速度慢
-DWITH_EMBEDDED_SERVER=1 \ 嵌入式数据库
-DENABLED_LOCAL_INFILE=1 \ 从本地倒入数据,不是备份和恢复。
-DWITH_INNOBASE_STORAGE_ENGINE=1 默认的存储引擎,支持外键
echo 'export PATH=$PATH:/usr/local/mysql/bin'>>/etc/profile //添加环境变量
source /etc/profile //重启服务
chown -R mysql.mysql /usr/local/mysql
cd /usr/local/mysql/mysql-test/include
cp /etc/{my.cnf,my.cnf.bak} //拷贝一份配置文件
vim /etc/my.cnf //这个文件要不没有,要不就要写内容
[mysqld]
basedir = /usr/local/mysql #安装目录
datadir = /usr/local/data #数据存放目录
tmpdir = /usr/local/tmp #/tmp缓存目录
socket = /usr/local/tmp/mysql.sock #指定socket文件的位置
pid_file = /usr/local/tmp/mysqld.pid #指定pid文件的位置
log_error = /usr/local/log/mysql_error.log #错误日志的位置
slow_query_log_file = /usr/local/log/slow_warn.log #慢日志查询
server_id = 1 #server-id=??
user = mysql #指定用户
port = 3306 #指定端口
bind-address = 0.0.0.0 #监听地址(允许所以ip访问)
character-set-server = utf8 #字符集
default_storage_engine = InnoDB #引擎
mysqld --defaults-file=/etc/my.cnf --initialize --user='mysql' //初始化,记录一下初始密码
如果需要重新初始化,删除/usr/local/mysql/data目录的东西删完
mysqld_safe --defaults-file=/etc/my.cnf &
ss -nplt | grep 3306
grep "password" /usr/local/log/mysql_error.log
awk '/temporary password/{p=$NF}END{print p}' /usr/local/log/mysql_error.log
mysqladmin -uroot -p'原密码' password '新密码' //原密码是初始密码
mysqladmin -uroot -p password //回车后,先输入原密码,在输入两遍新密码,更改成功
mysql -uroot -p'新密码'
[ \q | exit | quit | ctrl+d ]
mysqladmin -uroot -p'新密码' shutdown
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
systemctl daemon-reload //重新加载系统控制工具
systemctl [start | stop | restart] mysqld
方法一:
systemctl enable mysqld
/sbin/chkconfig mysqld on //设置mysql开机自启命令
方法二:
chkconfig --list //查询自启动服务
前面已经把启动文件拷贝到/etc/init.d/mysqld,所以进入/etc/init.d目录
chmod +x /etc/init.d/mysqld //赋予可执行权限
chkconfig --add mysqld //添加为自启动服务
chkconfig --list //查询自启动服务
然后reboot重启,就实现开机自启了
rm -rf /var/lib/mysql
rm -rf /etc/my.cnf
rm -rf /var/log/mysql*
yum -y erase mysql* mariadb* //卸载残留
yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm
vim /etc/yum.repos.d/mysql-community.repo //默认下载mysql的版本,打开5.7,关闭8.0
修改默认下载版本的方法
直接更改配置文件:vim
永久修改
yum -y install yum-utils //安装工具
yum-config-manager --disable mysql80-community //关闭8.0
yum-config-manager --enable mysql57-community //关闭5.7
临时修改
yum -y install mysql-community-server --enablerepo mysql57-community --disablerepo mysql80-community //安装的时候指定关闭8.0版本打开5.7版本
yum -y groupinstall "Development Tools"
yum -y install mysql-community-server
systemctl start mysqld //首次启动初始化mysql
grep "password" /var/log/mysqld.log //日志中查找初始密码
第一种方法
mysqladmin -p'旧密码' password '符合密码策略的新密码'
第二种方法
vim /etc/my.cnf //mysql的配置文件
validate_password=OFF //关闭密码策略
mysqladmin -p'旧密码' password '新密码'
systemctl restart mysqld //重启服务后,就可以使用新密码登录