软件开发和网站开发区别,wordpress 异步加速,手机网页无法访问如何解决,新网站上线 怎么做seo一、Mysql
1.1 MySQL数据库介绍
1.1.1 什么是数据库DB#xff1f;
DB的全称是database#xff0c;即数据库的意思。数据库实际上就是一个文件集合#xff0c;是一个存储数据的仓库#xff0c;数据库是按照特定的格式把数据存储起来#xff0c;用户可以对存储的数据进行…一、Mysql
1.1 MySQL数据库介绍
1.1.1 什么是数据库DB
DB的全称是database即数据库的意思。数据库实际上就是一个文件集合是一个存储数据的仓库数据库是按照特定的格式把数据存储起来用户可以对存储的数据进行增删改查操作
1.1.2 什么是sql
SQL代表结构化查询语言(Structured Query Language)。SQL是用于访问数据库的标准化语言。
SQL包含三个部分 DDL 数据定义语言包含定义数据库及其对象的语句例如表视图触发器存储过程等。 DML 数据操作语言包含允许更新和查询数据的语句。(在这里查询语言可分为DQL) DCL 数据控制语言允许授予用户权限访问数据库中特定数据的权限。
1.1.3 Mysql是什么 MySQL是一个关系型数据库管理系统由瑞典MySQL AB 公司开发目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System关系数据库管理系统) 应用软件之一。关系数据库将数据保存在不同的表中而不是将所有数据放在一个大仓库内这样就增加了速度并提高了灵活性。 My是MySQL的联合创始人 - Monty Widenius 的女儿的名字。MySQL是My和SQL的组合这就是MySQL命名的由来。 MySQL的官方网址 MySQL MySQL的社区版本下载地址为 MySQL :: Download MySQL Community Server 在写本文时当前的MySQL最新版本是8.0 。 MySQL是一个数据库管理系统也是一个关系数据库。它是由Oracle支持的开源软件。这意味着任何一个人都可以使用MySQL而不用支付一毛钱。 另外如果需要还可以更改其源代码或进行二次开发以满足您的需要。
1.1.4 mysql和mariadb的前世今生 MySQL的名字来自Michael Widenius的女儿MyMy是Michael Widenius和前妻的女儿。 MariaDB的名字来自Michael Widenius的小女儿MariaMaria是Michael Widenius和第二任妻子的女儿。 Michael Widenius和前妻还有个儿子叫Max当然这个儿子的名字也没有浪费。在2003年的时候德国软件公司SAP与MySQL建立合作关系SAP旗下的数据库产品SAP DB被重新命名为MaxDB其中的Max正是来自Michael Widenius的儿子的名字。
1.1.5 什么是关系型数据库SQL 关系型数据库是依据关系模型来创建的数据库。 所谓关系模型就是“一对一、一对多、多对多”等关系模型关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织。 关系型数据可以很好地存储一些关系模型的数据比如一个老师对应多个学生的数据“多对多”一本书对应多个作者“一对多”一本书对应一个出版日期“一对一” 数据的存储形式
1.1.6 什么是非关系型数据库NOSQL 非关系型数据库主要是基于“非关系模型”的数据库由于关系型太大所以一般用“非关系型”来表示其他类型的数据库 非关系型模型比如有 存储的数据是一列列的。关系型数据库以一行作为一个记录列模型数据库以一列为一个记录。这种模型IO很快主要是一些分布式数据库
1.1.7 关系型数据库与非关系型数据库的区别
1.关系型数据库:
优点
1、易于维护都是使用表结构格式一致
2、使用方便SQL语言通用可用于复杂查询
3、复杂操作支持SQL可用于一个表以及多个表之间非常复杂的查询。
缺点
1、读写性能比较差尤其是海量数据的高效率读写
2、固定的表结构灵活度稍欠
3、高并发读写需求传统关系型数据库来说硬盘I/O是一个很大的瓶颈。
2.非关系型数据库
优点
1、格式灵活存储数据的格式可以是key,value形式、文档形式、图片形式等等文档形式、图片形式等等使用灵活应用场景广泛.
2、速度快可以使用硬盘或者内存作为载体而关系型数据库只能使用硬盘
3、成本低数据库部署简单基本都是开源软件。
缺点
1、不提供sql支持学习和使用成本较高
2、无事务处理
关系型数据库Oralce Mysql DB2 PostgreSQL SqlServer
非关系型数据库Redis MongDB Memcache
1.2 MySQL安装
主机名IP地址配置信息部署服务mysql39.97.123.93 172.17.105.55CPU:2 RAM:2 DISK:20Gyum-mysqlMysql_source39.97.125.73 172.17.105.56CPU:2 RAM:2 DISK:20G编译-mysql
1.2.1 MySQL部署之yum安装
Mysql开源数据库
https://www.mysql.com //mysql官网
yum安装步骤 yum安装 清理环境
[rootmysql ~]# yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y
[rootmysql ~]# userdel -r mysql
[rootmysql ~]# rm -rf /etc/my*
[rootmysql ~]# rm -rf /var/lib/mysql 下载yum源的rpm安装包
[rootmysql ~]# yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
[rootmysql ~]# vim /etc/yum.repos.d/mysql-community.repo
把安装5.7的源打开, 关闭安装8.0的源 这里有第二种修改的方法方便我们使用脚本修改
[rootmysql ~]# yum repolist all |grep mysql
[rootmysql ~]# yum-config-manager --disable mysql80-community
[rootmysql ~]# yum-config-manager --enable mysql57-community
#关闭防火墙和selinux
[rootmysql ~]# sed -ri s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config setenforce 0
[rootmysql ~]# systemctl stop firewalld systemctl disable firewalld
#安装必要的软件包
[rootmysql ~]# yum -y groupinstall Development Tools
[rootmysql ~]# yum -y install mysql-community-server
从日志中找出密码有可能没有密码
[rootmysql ~]# grep password /var/log/mysqld.log
2018-12-26T22:41:24.218413Z 1 [Note] A temporary password is generated for rootlocalhost: %ig10uS.dre
#登陆数据库[rootmysql ~]# mysql -uroot -p%ig10uS.dre
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type help; or \h for help. Type \c to clear the current input statement.
mysql alter user rootlocalhost identified by QianFeng123;
Query OK, 0 rows affected (0.00 sec)
mysql exit
Bye
补充
[rootmysql ~]# vim /etc/my.cnf
# 关闭mysql密码强度策略生产环境切勿尝试首次启动不可关闭
validate-passwordOFF
# 跳过密码进入数据库,用于忘记密码时使用
skip-grant-tables
1.2.2 MySQL部署之源码安装
安装依赖包
注 相关依赖包的作用
cmake由于从MySQL5.5版本开始弃用了常规的configure编译方法所以需要CMake编译器用于设置mysql的编译参数。如安装目录、数据存放目录、字符编码、排序规则等。
Boost从MySQL 5.7.5开始Boost库是必需的mysql源码中用到了C的Boost库要求必须安装
源码安装
与二进制(RPM)发行版本相比如果我们选择了通过源代码进行安装那么在安装过程中我们能够对MySQL
所做的调整将会更多更灵活一些。因为通过源代码编译我们可以
a) 针对自己的硬件平台选用合适的编译器来优化编译后的二进制代码
b) 根据不同的软件平台环境调整相关的编译参数
c) 针对我们特定应用场景选择需要什么组件不需要什么组件
d) 根据我们的所需要存储的数据内容选择只安装我们需要的字符集(utf-8)
e) 同一台主机上面可以安装多个MySQL
在源码安装给我们带来更大灵活性的同时同样也给我们带来了可能引入的隐患
a) 对编译参数的不够了解造成编译参数使用不当可能使编译出来的二进制代码不够稳定
b) 对自己的应用环境把握失误而使用的优化参数可能反而使系统性能更差
c) 还有一个并不能称之为隐患的小问题就是源码编译安装将使安装部署过程更为复杂所花费的时间更长
# 所需要的依赖及安装mysql的包
[rootmysql_source ~]# yum -y groupinstall Development Tools
[rootmysql_source ~]# yum -y install ncurses ncurses-devel openssl-devel bison libgcrypt gcc gcc-c make cmake
bison Linux下C/C语法分析器
ncurses字符终端处理库
[rootmysql_source ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-boost-5.7.24.tar.gz
# 在系统中添加运行mysqld进程的用户mysql
[rootmysql_source ~]# groupadd mysql
[rootmysql_source ~]# useradd -M -g mysql -s /sbin/nologin mysql
# 在系统中添加自定义mysql数据库目录及其他必要目录
[rootmysql_source ~]# mkdir -p /usr/local/{data,mysql,log,tmp}
[rootmysql_source ~]# chown -R mysql:mysql /usr/local/{data,mysql,log,tmp}
# 将mysql-boost-5.7.24.tar.gz解压到当前目录,并执行部署操作
[rootmysql_source ~]# tar xf mysql-boost-5.7.24.tar.gz
[rootmysql_source ~]# cd mysql-5.7.24
[rootmysql_source mysql-5.7.24]# cmake . \
-DWITH_BOOSTboost/boost_1_59_0/ \
-DCMAKE_INSTALL_PREFIX/usr/local/mysql \
-DSYSCONFDIR/etc \
-DMYSQL_DATADIR/usr/local/mysql/data \
-DINSTALL_MANDIR/usr/share/man \
-DMYSQL_TCP_PORT3306 \
-DMYSQL_UNIX_ADDR/usr/local/tmp/mysql.sock \
-DDEFAULT_CHARSETutf8 \
-DEXTRA_CHARSETSall \
-DDEFAULT_COLLATIONutf8_general_ci \
-DWITH_READLINE1 \
-DWITH_SSLsystem \
-DWITH_EMBEDDED_SERVER1 \
-DENABLED_LOCAL_INFILE1 \
-DWITH_INNOBASE_STORAGE_ENGINE1
提示boost也可以使用如下指令自动下载如果不下载bost压缩包把下面的这一条添加到配置中第二行
-DDOWNLOAD_BOOST1/
参数详解:
-DCMAKE_INSTALL_PREFIX/usr/local/mysql \ 安装目录
-DSYSCONFDIR/etc \ 配置文件存放 默认可以不安装配置文件
-DMYSQL_DATADIR/usr/local/mysql/data \ 数据目录 错误日志文件也会在这个目录
-DINSTALL_MANDIR/usr/share/man \ 帮助文档
-DMYSQL_TCP_PORT3306 \ 默认端口
-DMYSQL_UNIX_ADDR/usr/local/tmp/mysql.sock \ sock文件位置用来做网络通信的客户端连接服务器的时候用
-DDEFAULT_CHARSETutf8 \ 默认字符集。字符集的支持可以调
-DEXTRA_CHARSETSall \ 扩展的字符集支持所有的
-DDEFAULT_COLLATIONutf8_general_ci \ 支持的
-DWITH_READLINE1 \ 上下翻历史命令
-DWITH_SSLsystem \ 使用私钥和证书登陆公钥 可以加密。 适用与长连接。坏处速度慢
-DWITH_EMBEDDED_SERVER1 \ 嵌入式数据库
-DENABLED_LOCAL_INFILE1 \ 从本地倒入数据不是备份和恢复。
-DWITH_INNOBASE_STORAGE_ENGINE1 默认的存储引擎支持外键
[rootmysql_source mysql-5.7.24]# echo $?
0
[rootmysql_source mysql-5.7.24]# make -j lscpu | awk NR4{ print $2 }
......
[100%] Built target udf_example
[rootmysql_source mysql-5.7.24]# echo $?
0
[rootmysql_source mysql-5.7.24]# make install
......
-- Installing: /usr/local/mysql/support-files/mysql.server
[rootmysql_source mysql-5.7.24]# echo $?
0
[rootmysql_source mysql-5.7.24]#
Congratulations Complete!
# 初始化MySQL安装配置
1.提升MySQL命令为系统级别命令
[rootmysql_source ~]# echo export PATH$PATH:/usr/local/mysql/bin/etc/profile
[rootmysql_source ~]# source /etc/profile
2.拷贝默认配置文件至/etc/my.cnf中
[rootmysql_source mysql]# chown -R mysql.mysql /usr/local/mysql
[rootmysql_source ~]# cd /usr/local/mysql/mysql-test/include
[rootmysql_source include]# cp /etc/{my.cnf,my.cnf.bak}
[rootmysql_source include]# 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 #引擎
3.执行数据库服务初始化操作
[rootmysql_source mysql]# mysqld --defaults-file/etc/my.cnf --initialize --usermysql
4.启动mysqld服务
[rootmysql_source mysql]# mysqld_safe --defaults-file/etc/my.cnf
[1] 25705
2019-8-18T09:19:35.334751Z mysqld_safe Logging to /usr/local/log/mysql_error.log.
2019-8-18T09:19:35.379829Z mysqld_safe Starting mysqld daemon with databases from /usr/local/data
5.配置mysqld服务的管理工具(便于启动)
[rootmysql_source support-files]# cd /usr/local/mysql/support-files
[rootmysql_source support-files]# cp mysql.server /etc/init.d/mysqld
[rootmysql_source support-files]# chkconfig --add mysqld
[rootmysql_source support-files]# chkconfig mysqld on
# 登录数据库并进行更改密码
[rootmysql_source mysql]# grep password /usr/local/log/mysql_error.log
2019-8-18T09:18:34.214401Z 1 [Note] A temporary password is generated for rootlocalhost: ejhszb2:m3wJ
[rootmysql_source tmp]# mysql -uroot -pejhszb2:m3wJ
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.24-log
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type help; or \h for help. Type \c to clear the current input statement.
mysql alter user rootlocalhost identified by (Bavdu..1228);
二、数据库基本操作
2.1 结构化语言SQL介绍
数据查询语言DQL:Data Query Language 其语句也称为“数据检索语句”用以从表中获得数据确定数据怎样在应用程序给出。保留字SELECT是DQL也是所有SQL用得最多的动词。
数据操作语言DMLData Manipulation Language 其语句包括动词INSERTUPDATE和DELETE。它们分别用于添加修改和删除表中的行。也称为动作查询语言。
数据控制语言DCL:Data Control Language 它的语句通过GRANT或REVOKE获得许可确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
数据定义语言DDLData Define Language 其语句包括动词CREATE和DROP。在数据库中创建新表或删除表CREAT TABLE 或 DROP TABLE为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
重点掌握
DQL
名词解释数据库服务器运行着数据库应用的设备数据库表的管理单元表字段、记录记录字段的管理单元字段字段名字段类型、长度字段约束组成类型字符数字日期约束NULL NOTNULL等
增删改查库 存放数据的目录表 文件(普通编辑器打不开)
修饰符 行叫记录 列叫字段 字段名称神器 edit 在edit里边编辑wq保存出来敲一个分号
创建库 create database company
查看库show databases; show create databse company
进入库 use company;
创建表 create table t1(id int(2),name char(20),age int);字段 类型 字段 类型(长度)字段 类型 (字段后便的就是字段的修饰符(约束条件)
查看表(show desc(describe) select) 查看表名称show tables; desc t1;(表的详细字段信息) 查看表创建过程 show create table t1; ----- 当表特别长的时候该为\G 则把表向左旋转90度可以更清楚看到 第一列显示字段名称第二列显示记录 查看表结构 desc t1查看表记录 select * from 表名 select 字段字段 from 表名 查看表状态 show table status like 表名 ;
修改表(alter) (add delect change)修改表名 rename table 原表名 to 新表名; rename table t11 to t9; alter table t9 rename to t1;添加字段 alter table 表名 add 字段 修饰符; alter table t1 add gender char(20); alter table t1 add grade char(20) after id; alter table t1 add zhuanye char(20) first;删除字段 alter table 表名 drop 字段; 修改字段 alter table 表名 change 旧字段 新字段 修饰符; change修改字段名称类型约束顺序alter table 表名 modify 字段 属性 修饰符 modify 不能修改字段名称alter table t1 change zhuanye major varchar(20) after gender; alter table t1 modify major varchar(20) after age;
修改记录 (inster update delete where)添加记录 insert into 表名 values (),(),(),(); insert into 表名(字段字段字段) values (),(),(); insert into t1 values(1,2,yingge,18,12,male);insert into t1(name,grade) values (wing,1);insert into t1(name,grade) values (newrain,2),(houzi,2); insert into t1 set namejianjian,grade1;
修改记录更新update 表名 set 字段 where 主键 ;update t1 set grade4 where nameyingge; 删除记录 delete from 表名 where 主键字段 ; delete from 表名; delete from t1 where id5;
删除表 drop table 表名drop table t1;删除库 drop databse 库名 drop database company;
各种查询select id,name from employee5 where id5;select id,dep_id,id*dep_id from company.employee5 where id5;select id*dep_id as id and dep_ids sum from company.employee5 where id5;
2.2 MySQL存储引擎拓展
MySQL引擎
可以理解为MySQL的“文件系统”只不过功能更加强大。
MySQL引擎功能
除了可以提供基本的存取功能还有更多功能事务功能、锁定、备份和恢复、优化以及特殊功能。和磁盘打交道mysql中组织。
1.什么是外键外键的主要作用是保持数据的一致性、完整性。
2.什么是索引:索引相当于书中的目录可以提高数据检索的效率降低数据库的IO。MySQL在300万条记录左右性能开始逐渐下降虽然官方文档说500~800w记录所以大数据量建立索引是非常有必要的
3.什么是事务事务是由一步或几步数据库操作这系列操作要么全部执行要么全部放弃执行。程序和事务是两个不同的概念。
事务具有四个特性原子性Atomicity、一致性Consistency、隔离性Isolatio 和持续性Durability。这四个特性也简称ACID性。1原子性事务是应用中最小的执行单位就如原子是自然界最小颗粒具有不可再分的特征一样。事务是应用中不可再分的最小执行体。最小了不可再分了2一致性事务执行的结果必须使数据库从一个一致性状态变到另一个一致性状态。当数据库中只包含事务成功提交的结果时数据库处于一致性状态。一致性是通过原子性
来保证的。说罢了就是白狗变成了黑狗不能出现斑点狗3隔离性各个事务的执行互不干扰任意一个事务的内部操作对其他并发的事务都是隔离的。也就是说并发执行的事务之间不能看到对方的中间状态并发执行的事务之间
不能相互影响。说白了就是你做你的我做我的4持续性持续性也称为持久性指事务一旦提交对数据所做的任何改变都要记录到永久存储器中通常是保存进物理数据库。说白了就是一条道跑到黑
4.什么是行锁与锁表可以将一张表锁定和可以单独锁一行的记录。为了防止你在操作的
同时也有别人在操作。
mysql常见的储存引擎 InnoDB MyIsam Memory也叫HEAP堆内存 Blackhole黑洞引擎 Archive(归档引擎)
为什么要合理选择数据库存储引擎MySQL中的数据用各种不同的技术存储在文件或者内存中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术你能够获得额外的速度或者功能从而改善你的应用的整体功能。
这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎。MySQL默认配置了许多不同的存储引擎可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。
MyISAM和InnoDB的区别(了解)
MyISAM和InnoDB的区别
Mysql在V5.1之前默认存储引擎是MyISAM在此之后默认存储引擎是InnoDB
MyISAM不支持事务而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的即每条SQL语句会默认被封装成一个事务自动提交这样会影响速度所以最好是把多条SQL语句显示放在begin和commit之间组成一个事务去提交。
InnoDB支持数据行锁定MyISAM不支持行锁定只支持锁定整个表。即 MyISAM同一个表上的读锁和写锁是互斥的MyISAM并发读写时如果等待队列中既有读请求又有写请求默认写请求的优先级高即使读请求先到所以 MyISAM不适合于有大量查询和修改并存的情况那样查询进程会长时间阻塞。因为MyISAM是锁表所以某项读操作比较耗时会使其他写进程饿死。
InnoDB支持外键MyISAM不支持。
Innodb能存储64TBMyISAM能存储256TB
InnoDB不支持全文索引而MyISAM支持。全文索引是指对char、 varchar和text中的每个词停用词除外建立倒排序索引。MyISAM的全文索引其实没啥用因为它不支持中文分词必须由使用者分词后加入空格再写到数据表里而且少于4个汉字的词会和停用词一样被忽略掉。书的目录
MyISAM支持GIS数据InnoDB不支持。即MyISAM支持以下空间数据对象Point,Line,Polygon,Surface等。
没有where的count(*)使用MyISAM要比InnoDB快得多。因为MyISAM内置了一个计数器count(*)时它直接从计数器中读而InnoDB必须扫描全表。
其他的存储引擎
MEMORY内存型引擎(了解)MEMORY存储引擎将表中的数据存储到内存中未查询和引用其他表数据提供快速访问MEMORY特点 所有的数据都在内存中数据的处理速度快但是安全性不高。如果需要很快的读写速度对数据的安全性要求较低可以选择MEMOEY。它对表的大小有要求不能建立太大的表。所以这类数据库只使用在相对较小的数据库表。
Archive(归档引擎)如何选择引擎如果要提供提交、回滚、并要求实现并发控制InnoDB是一个好的选择如果数据表主要用来插入和查询记录则MyISAM引擎能提供较高的处理效率如果只是临时存放数据数据量不大并且不需要较高的数据安全性可以选择将数据保存在内存中的Memory引擎MySQL中使用该引擎作为临时表存放查询的中间结果如果只有INSERT和SELECT操作可以选择ArchiveArchive支持高并发的插入操作但是本身不是事务安全的。Archive非常适合存储归档数据如记录日志信息可以使用Archive。
查看支持的存储引擎
mysql show engines; 看你的mysql当前默认的存储引擎:
mysql show variables like %storage_engine%;
如何查看Mysql服务器上的版本
mysql select version();
创建时候指定引擎
mysql create table t1(id int,manager char(10)) engine innodb;
2.3 创建并管理基本表 [rootmysql ~]# mysql -uroot -p123 #登录数据库
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.24 MySQL Community Server (GPL)
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type help; or \h for help. Type \c to clear the current input statement.
mysql show databases; ##查询数据库
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| performance_schema |
| sys |
--------------------
4 rows in set (0.00 sec)
mysql create database newrain; ##创建数据库
Query OK, 1 row affected (0.00 sec)
mysql flush privileges; ##刷新数据库及表的列表内容(常用于授权之后)
Query OK, 0 rows affected (0.01 sec)
mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| newrain |
| mysql |
| performance_schema |
| sys |
--------------------
5 rows in set (0.00 sec)
mysql drop database newrain; ##删除数据库
Query OK, 0 rows affected (0.00 sec)
mysql flush privileges;
Query OK, 0 rows affected (0.01 sec)
mysql show databases;
--------------------
| Database |
--------------------
| information_schema |
| mysql |
| performance_schema |
| sys |
--------------------
4 rows in set (0.00 sec)
mysql use mysql; ##使用数据库
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql show tables; ##查看库中的表
---------------------------
| Tables_in_mysql |
---------------------------
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| innodb_index_stats |
| innodb_table_stats |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| server_cost |
| servers |
| slave_master_info |
| slave_relay_log_info |
| slave_worker_info |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
---------------------------
31 rows in set (0.00 sec)
mysql select * from mysql.user\G; ##查询表中的内容,“\G”为标准化输出,不加会乱码
*************************** 1. row ***************************Host: localhostUser: rootSelect_priv: YInsert_priv: YUpdate_priv: YDelete_priv: YCreate_priv: YDrop_priv: YReload_priv: YShutdown_priv: YProcess_priv: YFile_priv: YGrant_priv: YReferences_priv: YIndex_priv: YAlter_priv: YShow_db_priv: YSuper_priv: YCreate_tmp_table_priv: YLock_tables_priv: YExecute_priv: YRepl_slave_priv: YRepl_client_priv: YCreate_view_priv: YShow_view_priv: YCreate_routine_priv: YAlter_routine_priv: YCreate_user_priv: YEvent_priv: YTrigger_priv: Y
Create_tablespace_priv: Yssl_type:ssl_cipher:x509_issuer:x509_subject:max_questions: 0max_updates: 0max_connections: 0max_user_connections: 0plugin: mysql_native_passwordauthentication_string: *7C80E5F2B2DC4B10B1D2CFF160F5C8240720B612password_expired: Npassword_last_changed: 2019-8-18 15:18:57password_lifetime: NULLaccount_locked: N
mysql select User,Host,authentication_string from user; ##根据条件查询表中的内容
---------------------------------------------------------------------
| User | Host | authentication_string |
---------------------------------------------------------------------
| root | localhost | *5CD4C2B38AEF87547D2735419AECEC731E44C1B8 |
| mysql.session | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| mysql.sys | localhost | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
---------------------------------------------------------------------
3 rows in set (0.00 sec)
mysql update user set authentication_stringpassword((Baidu..1229)) where userroot;
Query OK, 1 row affected, 1 warning (0.00 sec) ##更新表中的内容
Rows matched: 1 Changed: 1 Warnings: 1
mysql exit ##退出数据库
Bye
[rootmysql ~]# 思考题:
Q: 通常在企业内部我们部署完一台mysql服务器会很慢, 但是为了应对企业成百上千台的要求, 我们的部署显得很捉襟见肘, 那么我们在部署完一台机器之后如何避免漫长的等待快速部署很多台符合要求的mysql服务器呢
mysql安装
1、关系型数据库 mysql、mariadb、sqlite 二维关系模型
2、非关系型数据库 redis、memcached sql 四个部分 DDL 数据库定义语言 创建数据库创建用户创建表 DML 数据库操作语言 增删 改 DQL 数据库查询语言 查 DCL 数据库控制语言 授权 收权
3、yum安装mysql
3.1 保证环境干净(注意生产环境确认后再处理)
3.2 安装mysql的yum源
3.3 修改需要安装的版本
3.4 安装mysql-community-server
3.5 确认 3.5.1 启动数据库 # 这里失败一般是环境问题。 3.5.2 找到密码-修改密码 # 注意-p后面没空格 password后面有空格 mysqladmin -uroot -p6Ghrfeu)nU;G password QianFeng123 3.5.3 测试登录
4、yum安装的mysql都干了什么 4.1 安装内容 4.1.1 /etc/my.cnf 配置文件 4.1.2 /var/lib/mysql 数据目录 4.1.3 /var/log/mysqld.log 日志位置 4.1.4 /usr/bin/mysql 客户端命令 mysqladmin 管理员命令 mysqld 服务端命令
5、卸载mysql 5.1 如果mysql启动需要关闭 5.2 卸载mysql软件服务 5.3 删除用户、数据目录、日志
6、内网安装mysql 6.1 更换源 curl -O https://gitea.beyourself.org.cn/newrain001/shell-project/raw/branch/master/os/get-repo.sh /dev/null sh get-repo.sh 6.2 安装mysql 6.3 与前面的yum安装一样操作
7、编译安装mysql
7.1 安装依赖包
7.2 找到源码包并检测解压缩
7.3 创建用户创建数据目录 7.3.1 数据存放位置 /opt/data 7.3.2 配置文件存放位置 /opt/db_config 7.3.3 安装位置 /opt/mysql 7.3.4 创建目录 mkdir /opt/{data,db_config,mysql} 7.3.5 授权 chown mysql.mysql -R /opt/{data,db_config,mysql} 7.3.6 确认防火墙selinux
7.4 编译安装 7.4.1 参数准备 cmake . \ -DWITH_BOOSTboost/boost_1_59_0/ \ - DCMAKE_INSTALL_PREFIX/opt/mysql \ -DSYSCONFDIR/opt/db_config \ -DMYSQL_DATADIR/opt/data \ -DINSTALL_MANDIR/usr/share/man \ -DMYSQL_TCP_PORT3306 \ -DMYSQL_UNIX_ADDR/tmp/mysql.sock \ -DDEFAULT_CHARSETutf8 \ -DEXTRA_CHARSETSall \ -DDEFAULT_COLLATIONutf8_general_ci \ -DWITH_READLINE1 \ -DWITH_SSLsystem \ -DWITH_EMBEDDED_SERVER1 \ -DENABLED_LOCAL_INFILE1 \ -DWITH_INNOBASE_STORAGE_ENGINE1 7.4.2 编译和安装 7.4.3 初始化 7.4.4 配置文件创建 创建日志目录 mkdir /var/log/mysql chown mysql.mysql /var/log/mysql vim my.cnf # 放到配置文件目录下 [mysqld] basedir /opt/mysql datadir /opt/data tmpdir /tmp socket /tmp/mysql.sock pid_file /tmp/mysqld.pid log_error /var/log/mysql/mysql_error.log slow_query_log_file /var/log/mysql/slow_warn.log
server_id 1 user mysql port 3306 bind-address 0.0.0.0 character-set-server utf8 default_storage_engine InnoDB 7.4.5 启动实现命令的便捷实用和便捷启动 echo export PATH$PATH:/opt/mysql/bin /etc/profile # 修改查找命令的路径 mysqld --defaults-file./db_config/my.cnf --initialize --usermysql # 初始化 cp /opt/mysql/support-files/mysql.server /etc/init.d/mysqld # 修改为可以使用systemctl 启动注意复制之后需要执行systemctl daemon-reload mysql 操作
1、客户端 mysql -u用户(root) -p密码(没有) -h 远程地址(权限) -P 端口(3306) -S socket文件位置(/var/lib/mysql/mysql.sock) 退出客户端 exit ctrld \q
2、增删改查 # 注意每一条sql后面必须有;
2.1 数据库操作
查看数据库 show databases;
创建数据库 create database 数据库名(小写字母) default charset utf8;
查看自己当前再哪个数据库 select database(); 进入数据库 use hello;
查看状态 status; 删除数据库 drop database hello;
2.2 数据表操作
查看表 show tables;
创表 create table t1(name varchar(20), gender enum(男,女,中));
插入数据 insert into hello.t1 values(老王, 男);
查看数据 select * from t1;
修改数据 update t1 set gender 女 where name 老王;
删除数据 delete from t1 where name老王;
删除表 drop table t1;
2.3 常用操作
查看创建语句 show create 资源名
查看表结构 desc t2;