数据库相关及mysql数据库安装
数据库的基本概念
数据data
描述事物的符号记录
包括数字、文字、图形、声音、档案记录等
以”记录“形式按统一格式进行存储
表
将不同的记录组织在一起
用来存储具体数据
数据库
表的集合,是存储数据的仓库
以一定的组织方式存储的相互有关的数据集合
数据库管理系统(DBMS)
是实现对数据资源有效组织、管理和存取的系统软件
数据库系统
是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库
用户组成用户可以通过DBMS或应用程序操作数据库
关系数据库
是基于关系模型的额数据库系统
结构使用简单易懂的二维数据表
关系模型可用简单的“实体–关系”(E-R)图来表示
E-R图中包含了实体(数据对象)、关系和属性三个要素
(Oracle,MySQL、SQLServer,Sybase、Informix,access、DB2,FoxPRO都是关系型数据库,像12306用户信息系统、淘宝账户系统、银行账户系统都是用的这种数据库)
实体
也称实例,对应现实世界中可区别于其他对象的“事件”或“事物”,如银行客户,账户等
属性
实体所具有的某一特性,一个实体可以有多个属性,入银行客户的姓名地址等
联系
实体之间的对应关系称为联系,也称关系,如银行客户与账户之间的储蓄关系
所有实体及实体之间的联系的集合构成一个关系数据库
关系数据库的存储结构是二维表格
在每个二维表中
每一行称为一条记录,用来描述一个对象的信息
每一列称为一个字段,用来描述对象的一个属性
非关系型数据库
也被称作nosql,存储数据不以关系模型为数据,不需要固定的表格式,常用的非关系型数据库:redis、mongoDB等
非关系型数据库的优点
数据库可高并发读写
对海量数据高效率存储与访问
数据库具有高扩展性与高可用性
mysql数据库
mysql数据库介绍
一款深受欢迎的开源关系型数据库
遵守GPL协议,可免费使用与修改
特点
性能卓越,服务稳定
开源,无版权限制,成本低
多线程,多用户
基于C/S(客户端/服务器)架构
安全可靠
安装mysql
yum -y install ncurses ncurses-devel bison cmake #安装依赖包
#ncurses ncurses-devel : ncurses是字符终端下屏幕控制的基本库
#bison:用于自动生成语法分析器程序,实际上可用于所有常见的操作系统。Bison把LALR形式的上下文无关文法描述转换为可做语法分析的C或C++程序。
#cmake:CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。CMake 可以编译源代码、制作程序库、产生适配器(wrapper) 、还可以用任意的顺序建构执行档。
useradd -s /sbin/nologin mysql #创建一个不可登录用户
tar zxvf mysql-boost-5.7.20.tar.gz #解压缩
cd mysql-5.7.20/ #编译安装cmake \
> -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
> -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
> -DSYSCONFDIR=/etc \
> -DSYSTEMD_PID_DIR=/usr/local/mysql \
> -DDEFAULT_CHARSET=utf8 \
> -DDEFAULT_COLLATION=utf8_general_ci \
> -DWITH_INNOBASE_STORAGE_ENGINE=1 \
> -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
> -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
> -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
> -DMYSQL_DATADIR=/usr/local/mysql/data \
> -DWITH_BOOST=boost \
> -DWITH_SYSTEMD=1
make && make install
#-DCMAKE_ INSTALL_ PREFIX=/usr/ local/mysql 安装目录 安装路径
#-DMYSQL_ UNIX_ ADDR=/usr/ local/mysql/mysql. sock 指定套接字文件的存储路径套接字:客户端访问mysql数据库的一个接口
#-DSYSCONFDIR=/etc 配置my. cnf的目录 配置文件路径,(根目录)
#-DSYSTEMD_PID_DIR=/usr/local/mysql 主服务进程所在路径 (进程文件目录)
#-DDEFAULT_CHARSET=utf8 默认字符集
#-DDEFAULT_COLLATION=utf8_ general ci 默认编码
#-DWITH_INNOBASE_STORAGE_ENGINE=1 启用InnoDB引擎
#-DWITH_ARCHIVE_STORAGE_ENGINE=1 启用ARCHIVE引擎
#-DWITH_BLACKHOLE_STORAGE_ENGINE=1 启用BLACKHOLE引擎
#-DWITH_ PERFSCHEMA_STORAGE_ENGINE=1 启用perfschema引擎,存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
#-DMYSQL_DATADIR=/usr/ local/mysql/data 数据存储路径 (数据库目录)
#-DWITH_B0OST=boost boost库是为C++语言标准库提供扩展的一些C++程序库的总称
#-DWITH_SYSTEMD=1 这是MySQL 5.7原生支持Systemd的选项, 如果要是用systemctl启动,就必须开启。 (开机自启动,管理mysql服务)
配置mysql
chown -R mysql.mysql /usr/local/mysql/ #设置属主,属组
vi /etc/my.cnf
[client]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysql]
port = 3306
default-character-set = utf8
socket = /usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
port = 3306
character_set_server = utf8
pid-file = /usr/local/mysql/mysqld.pid
socket = /usr/local/mysql/mysql.sock
server-id = 1
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
#[client] 客户端
#port = 3306 访问端口
#default-character-set = utf8 默认字符集
#socket = /usr/local/mysql/mysql.sock 套接字
#[mysql] 运行用户
#port = 3306 运行端口#[mysqld] 程序
#user = mysql 运行用户
#basedir = /usr/local/mysql 根目录
#datadir = /usr/local/mysql/data 用户目录#character_set_server = utf8 服务器设置字符
#pid-file = /usr/local/mysql/mysqld.pid 进程文件#server-id = 1 数据库id
#NO_ENGINE_SUBSTITUTION: 在开启该MODE的情况下,在创建表时,如果指定的存储引擎不存在或不支持,则会直接提示“ERROR”。
#STRICT_TRANS_TABLES: 严格模式,进行数据的严格校验,错误数据不能插入,报error错误。
#NO_AUTO_CREATE_USER: MODE禁止的只是不带"identified by”子句的grant语句,对于带有"identified by”子句的grant语句,其并不会禁止。
#NO_AUTO_VALUE_ON_ZERO: 该值影响自增长列的插入。默认情况下,在对自增主键插入NULL或0时,会自动生成下一个值。若开启该MODE, 当插入0时,并不会自动生成下一个值。
#NO_ZERO_IN_DATE: NO_ZERO_IN_DATE针对的是年不为0。
#NO_ZERO_DATE: 该MODE会影响’0000-00-00的插入。实际效果还取决于是否开启严格模式。在开启严格模式,且同时开启该MODE,是不允许’0000-00-00'插入的。
#ERROR_FOR_DIVISION_BY_ZERO:在INSERT或UPDATE过程中,如果数据被零除,则产生错误而非警告。如果未给出该模式,那么数据被零除时MySQL返回NULL。
#PIPES_AS_CONCAT: 将”||”视为字符串的连接操作符而非或运算符,这和Oracle数据库是一样的,也和字符串的拼接函数Concat相类似。
#ANSI_QUOTES:启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它被解释为识别符。
设置全局变量
echo 'PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH' >> /etc/profile #设置全局变量
echo 'export PATH' >> /etc/profile #全局变量追加
source /etc/profile #生效,初始化配置文件
echo $PATH #查看
初始化
无论是编译安装,二进制安装,还是yum,rpm,装完mysql都是要初始化后才能使用。
mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cd /usr/local/mysql/
cp usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ #拷贝
systemctl daemon-reload #守护进程重新加载
systemctl start mysqld #服务启动
cd
netstat -anpt | grep 3306 查看端口状态
systemctl enable mysqld 自启动
mysql 登录数据库(初始登录,没有密码)
mysqladmin -uroot -p password '123123' #设置密码为123123
#直接回车
mysql -uroot -p123123 #登录数据库
#
修改密码
1:用SET PASSWORD命令
格式: mysql> set password for 用户名@localhost = password( ‘ 新密码’);
例子: mysql> set password for root@localhost =password( ‘123’) ;
简写:mysql> set password=password(' 123' ) ;
2:用mysqladmin
格式: mysqladmin -u用户名-p旧密码password 新密码
例子: mysqladmin -uroot -p123456 password 123
3:用UPDATE直接编辑user表
mysql
use mysql ;mysql> update mysql. user set authentication_ string=password(' 111111) where user=' root’andhost=' localhost' ;
mysql> flush privileges;
登录
mysqlmysql -uroot -p111111