常见错误
安装 | 打开workbench,连接本地数据库

定位问题:大概在MySQL workbench 8.0.16以上版本存在的bug,重新安装workbench8.0.16以下版本即可、
重新安装:
1、控制面板-程序-卸载MySQL workbench
2、打开MySQL Installer -community-add-mysql workbench 8.0.16
重新打开workbench,no connection
解决:启动MySQL服务,输入登入密码
- 连接 | 连接另一台设备的MySQL

问题:远程MySQL未授权限
解决:远程MySQL新建用户(不要用root账户)以供连接
MYSQL安装
1.初识 MYSQL
- 应用广泛
- 开源
- Oracle旗下产品
- 一个SQL接口,内含多种数据引擎
1.1数据引擎
- InnoDB:由Innobase Oy公司开发的一款支持事务的数据库引擎,2006年被Oracle收购;
- MyISAM:MySQL早期集成的默认数据库引擎,不支持事务。
MySQL接口和数据库引擎的关系就好比某某浏览器和浏览器引擎(IE引擎或Webkit引擎)的关系。
使用MySQL时,不同的表还可以使用不同的数据库引擎。如果你不知道应该采用哪种引擎,记住总是选择InnoDB就好了。
1.2MYSQL衍生版本
- MariaDB
- Aurora
- PolarDB
1.3MYSQL官方版本
- Community Edition:社区开源版本,免费;
- Standard Edition:标准版;
- Enterprise Edition:企业版;
- Cluster Carrier Grade Edition:集群版。
2. 安装MYSQL
Windows上安装MYSQL(.msi) 教程
- 官网下载社区版:DOWNLOADS->MySQL Community (GPL) Downloads->MySQL Community Server->No thanks, just start my download.
- .msi安装
- Developer Default:默认安装类型;
- Server only:仅作为服务;
- Client only:仅作为客户端;
- Full:完全安装;
- Custom:自定义安装类型。
- 设置账户密码:Yoga:linpions 161209020;默认端口3306 T440:root 161209020

- 设置环境变量:C:\Program Files\MySQL\MySQL Server 8.0\bin
Windows上安装MYSQL(.zip)RUNOOB菜鸟教程
- .zip安装
- 下载zip安装包,解压到你想安装到的地方
- 配置文件,打开主目录,创建my.ini配置文件,编辑文件:
- 初始化MySQL
3. MySQL组件
MySQL各个组件功能简介
- MySQL Command Line Client:命令行操作,MySQL command line client —Unicode与MySQL command line client区别: Unicode是统一的字符编码标准,MySQL的Windows客户端自从5.6.2版本后提供了Unicode界面支持。而原来的MySQL Client是默认在dos下运行的,不够满足Windows下标准编码的需求。用起来也有感觉,在Unicode下运行速度比原来的在dos环境下运行要快得多,字体等也更符合编程要求(Unicode是用的16位储存和表示每个字符的,并能够表示大多数字符。 作者:五秋木 链接:https://www.jianshu.com/p/9435c528e288 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- MySQL Installer:用来安装和更新MySQL。
- MySQL Notifier:启动,停止或重新启动MySQL服务器;自动检测并管理现有 MySQL 服务,配置现有的或建立新的 MySQL 服务;服务状态提醒。绿色,所有的 MySQL 服务器实例正在运行;红色,如果至少有一个服务被停止;集成其他管理工具。如 MySQL Workbench,可以通过 Configure Instance(配置实例)和 SQL Editor (SQL 编辑器)快捷方式启用 MySQL Workbench 的功能。是一款MySQL数据库的辅助工具,官方支持的DBA工具之一。
- MySQL Shell:是MySQL的高级命令行客户端和代码编辑器。除SQL外,MySQL Shell还为JavaScript和Python提供脚本功能。除了提供的SQL功能(类似于mysql)之外,MySQL Shell还提供JavaScript和Python的脚本功能,并包括与MySQL一起使用的API。功能
- 支持的语言:MySQL Shell处理用JavaScript,Python和SQL编写的代码。
- 交互式代码执行;批处理代码执行
- 支持的API:MySQL Shell包含以下用JavaScript和Python实现的API,可用于开发与MySQL交互的代码。
- X协议支持;扩展名;API命令行集成
- 实用工具:升级检查器实用程序、JSON导入实用程序、并行表导入实用程序。
- 输出格式;记录和调试;全球会议
- MySQL Workbench:专为 MySQL 设计的集成化桌面软件,也是下一代的可视化数据库设计、管理的工具,它同时有开源和商业化两个版本。管理MySQL服务器并编辑SQL语句。MySQL Workbench 是可视化数据库设计软件,为数据库管理员和开发人员提供了一整套可视化的数据库操作环境,主要功能有数据库设计与模型建立、SQL 开发(取代 MySQL Query Browser)、数据库管理(取代 MySQL Administrator)。
- Management Serveices & Utilities:系统管理和控制工具。
- Connection Pool:连接池,管理缓冲用户连接,线程处理等需要缓存的需求。
-
启动\关闭MYSQL服务器
cmd方式
net start mysql80 #服务器名称 net stop mysql80
- 窗口方式
控制面板 -> 管理工具 -> 服务 -> 找到MySql -> 点击启动或者关闭
5. 登录MYSQL服务器
- cmd方式
cd C:\Program Files\MySQL\MySQL Server 8.0\bin mysql -u 用户名 -p 然后回车 # 前提是mysql命令已经添加到环境变量path中或者在dos中进入mysql所在目录 输入密码(mysql -h localhost -P 3306 -u root -p) \q或者exit或者quit help
- MYSQL Workbench界面
- MySQL服务器地址
初始登录失败+修改密码
刚安装MySQL,找root默认密码
- 可能存在:在安装目录下的data文件夹下找到后缀名为 .err 的文件

- 可能存在:安装刚初始化的窗口上,记得截图保存
用默认密码登录出现1045错误
- 关闭服务;在my.ini文件添加skip —grant-tables;重启服务;mysql -u root -p回车进行免密登录
- 免密登录失败:https://blog.csdn.net/qq_42784277/article/details/106909880
- 关闭服务
- cmd(管理员)运行:mysqld —skip-grant-tables;回车跳过验证
- 打开另一个cmd窗口:输入mysql回车
- 用下面方法三修改密码
修改密码:
- 方法一:set password for username@localhost = password(‘newpwd’);(登录后修改)
- 方法二:mysqladmin -u用户名 -p旧密码 password 新密码(cmd中修改)
方法三:UPDATE直接编辑user表(登录后修改)
create user username identified by ‘password’;
- Error1820错误解决:https://www.jianshu.com/p/5365b91f28dd
SET PASSWORD = PASSWORD(‘your new password’);
ALTER USER ‘root’@’localhost’ PASSWORD EXPIRE NEVER;
flush privileges;
- GRANT ALL ON . to user@’IP’ IDENTIFIED BY ‘password’; 其中user表示需要创建用户的名字;IP远程主机表示哪台客户端想要访问mysql数据库(用%表示任意IP地址);password表示密码;并赋予所有的权限。
MySQL导入、导出数据
导入数据
导入EXCEL (.csv) 数据
- 使用workbench
excel表格另存为.csv;表格列属性名为英文- 转换
.csv编码格式为UTF8(使用Notepad++)

- 使用Navicat
可导入数据格式,行标题可以为中文

导入**.sql**
- sql命令
mysql -u用户名 -p密码 < 要导入的数据库数据(runoob.sql)示例:# mysql -uroot -p123456 < runoob.sql
- source命令
mysq1> create database abc;#创建数据库
mysq1> use abc;#使用已创建的数据库
mysq1> set names utf8;#设置编码
mysq1> source/home/abc/abc.sq1#导入备份数据库
导出数据
Mysql导出数据的几种方式
- 使用SELECT into outfile
【select 语句】 into outfile 【导出文件名】 【导出参数】
【select语句】是经典的查询SQL,可以指定列、可以有where条件、group、order、limit等。 【导出文件名】是目标文件的完整路径。由于mysql账户的权限问题,通常我们会将文件导出到临时目录,如/tmp/mysql/user/201810.csv 【导出参数】
- fields terminated by ‘str’:设置字段之间的分隔符,默认值是”\t”。
- fields enclosed by ‘char’:设置包括住字段的值的符号,如单引号、双引号等,默认情况下不使用任何符号。
- fields optionally enclosed by ‘char’:设置括住CHAR、VARCHAR和TEXT等字符型字段的分隔符,默认情况下不使用任何符号。
- fields escaped by ‘char’:设置转义字符,默认值为”\”。
- lines starting by ‘str’:设置每行数据开头的字符,可以为单个或多个字符。默认情况下不使用任何字符。
- lines terminated by ‘char’:设置每行数据结尾的字符,可以为单个或多个字符。默认值是”\n”。
譬如:
如果导出的数据,涉及到中文,打开csv可能会看到乱码。处理乱码,首先要确保数据库支持中文(通常设置UTF8编码即可)
vim /etc/my.cnf, 添加如下几个选项:
即便数据库已经是utf8,导出的文件download本地依然可能有乱码,在服务器上less,tail看到的结果都是正常的?
在本地环境(windows)用记事本打开csv,另存编码格式ANSI即可,这是由于excel的编码格式决定的。
- 使用mysqldump
mysqldump属于逻辑备份工具,因为它导出的是结果,多以SQL的形式展示,并不记录数据的变化过程。关于物理备份,可以参照一本名为“MySQL技术内幕”的书籍,其中有详细的描述。
mysqldump的语法很简单,即 mysqldump 【options】> dump.sql
但是options的可选参数却很多,手册上将他分了几大类,链接option、文件option、数据定义DDL option、Debug option、国际化option、集群Replication option、格式 option、性能option、事务option等。感兴趣的同学可以参照MYSQL官方手册的定义,这里仅介绍几种常见的应用场景。
- 导出表结构和最新的数据mysqldump -uroot -p platform88 > /data/mysql/dump20181020.sql, 再输入密码即可。
- —routines, -R 导出存储过程及函数mysqldump -uroot -p -R platform88 > /data/mysql/dump20181022.sql
- -ignore-table跳过某个表mysqldump -uroot -p —ignore-table=platform88.platformapitrace platform88 > /data/mysql/dump20181022.sql
如果想跳过多个表,多次使用该选项 : mysqldump -uroot -p -R —ignore-table=platform88.platformapitrace —ignore-table=platform88.platformaccount platform88 > /data/mysql/dump20181022.sql 注意,该选项值必须包含schema。
- -X —lock-all-tables, -l —lock-tables导出前锁定表记录mysqldump -uroot -p -R —ignore-table=platform88.platformapitrace —lock-tables -B platform88 > /data/mysql/dump20181022.sql
使用lock tables时,需要指定数据库,即-B参数。
—no-data -d 仅导出表结构mysqldump -uroot -p -R -d -B platform88 > /data/mysql/dump20181022.sql
6. —no-create-info -t 仅导出数据,不创建表结构mysqldump -uroot -p -R -t -B platform88 > /data/mysql/dump20181022.sql
-opt 选项套餐 -opt默认会执行如下选项: —add-drop-table —add-locks —create-options —disable-keys —extended-insert —lock-tables —quick —set-charset的缩写。
—dump-slave[=value]、—master-data[=value] 主从架构下的常用参数,主从备份。
9. —compact 压缩 —compact默认开启如下选项: —skip-add-drop-table, —skip-add-locks, —skip-comments, —skip-disable-keys, and —skip-set-charset options.
参考自:
《零基础学SQL》——孙浏毅等,
《SQL必知必会(第4版)》——Ben Forta著,钟鸣、刘晓霞译
《SQL基础教程(第3版)》——Chris Fehily著,冯宇晖、贾文峰译
以上文件已保存至百度网盘->知识海洋
1.数据库类型
- 层次模型(树状)
- 网状模型
- 关系模型(二维表格)
2.数据类型
3.主流关系数据库
4. 关系数据库介绍
关系数据库:二维表的集合,可存储不同类型的数据信息。
常用数据库:
- Oracle数据库
- MySQL数据库
- Microsoft SQL Server数据库
- DB2数据库
4.1 数据模型
- 概念模型:以客户的观点和想法为基础,对现实世界事物的抽象
在关系数据库的设计中,通过E-R图(实体-关系图)来描述的。E:Entity,R:Relationship。
关系:
- 一对一:校长与学校
- 一对多:院系与学生
- 多对多:课程与授课教师
E-R图中的3种符号:
- 矩形:实体
- 椭圆(圆):属性
- 菱形:关系
- 逻辑数据模型:用户看到的数据库中的数据模型,常用的是关系数据模型
关系数据模型:用二维表描述实体与属性之间的关系,两个二维表的关系包括上述3种。
二维表:行——实体中的具体数据,列——实体中的属性。
- 物理数据模型:用来表示数据的存储结构的
4.2 关系模式
关系模式:表示对关系的描述,关系数据库中3种关系模型:
- 概念模式:也称模式,用来描述数据库中的数据逻辑结构,可把其理解为现实世界中的实体在数据库系统中的具体实现。概念模式与应用程序和计算机硬件等环境无关。
- 外模式:也称用户模式,是概念模式的一部分,在外模式中定义了允许用户操作的数据,例如,在数据库中用户看到的视图就可理解为关系数据库中的外模式。不同数据的外模式不完全相同的。
- 内模式:也称存储模式,描述数据的物理结构和数据的存储方式的。例如,关系数据库中索引的组织方式,数据记录的存储方式等就可以理解为关系数据库的内模式。
4.3 常用关系数据库
主流数据库厂商:Oracle、Microsoft、Sybase、Informix、IBM等
开源数据库产品:MySQL、postgreSQL、SAP等
- Oracle数据库
美国Oracle公司(甲骨文)推出的关系数据库系统,提供完整的数据管理功能。主要应用于大、中型应用系统、C/S(客户端/服务端)、B/S(浏览器/服务器)系统中的服务器端
适用系统特征:
- 数据量大
- 并发操作多
- 实时性要求高
- Microsoft SQL Server数据库
具有高性能、可扩展、先进的系统管理、支持Windows图形化管理工具、杰出的事务处理功能等特点。
- MySQL数据库
瑞典的MySQL AB公司,特点:
- 功能强大
- 使用灵活
- 多用户
- 多线程SQL
- 开源免费
- 提供了丰富的应用程序接口和非常有用的功能集
- 流行互联网,很多软件开发人员和商业用户的选择
- 操作简单、性能高、可 移植性号、安装占用资源少
MySQL数据库有C、C++语言编写,支持多线程,为不同编程语言提供相应的API
- PostgreSQL数据库
以Postgres v4.2为基础,一款对象关系型数据库管理系统,采用C/S结构,支持事务、存储过程、并发控制、性能优异。
与MySQL相比,功能更丰富,速度和稳定性逊色,也是开源免费。
4.4 主键
主键(PRIMARYKEY)又称主码,用于唯一地标识表中的每一条记录。可以定义表中的一列或多列为主键,主键列上不能有两行相同的值,也不能为空值。
4.5 数据库系统
数据库系统组成:
- 数据库:存储数据的地方
- 数据库管理系统:用于管理数据库的软件
- 数据库应用程序:为了提高数据库系统的处理能力所使用的管理数据库的软件补充
4.6 数据库访问技术
·不同的程序设计语言会有各自不同的数据库访问技术,程序语言通过这些技术,执行SQL语句,进行数据库管理。主要的数据库访问技术有:
- ODBC
- JDBC
- ADO.NET
-
SQL语言简介
SQL(Structured Query Language):一种结构化的查询语言,是实现与关系数据库通信的标准语言。
SQL标准有ISO(国际标准化组织)和ANSI(美国国家标准化组织)共同制定。
5.1 SQL语言介绍
SQL:关系数据库中操作的标准语言,对数据库增删改查,修改表结构等。
功能:- 数据定义语言(Data Definition Language,DDL)
- 数据查询语言(Data Query Language,DQL)
- 数据操作语言(Data Manipulation Language,DML)
- 数据控制语言(Data Control Language,DCL)
- 事务控制语言
SQL语言通用于这些数据库:Oracle、Microsoft SQL Server、MySQL、PostgreSQL、DB2、Microsoft Access等。
不同厂商对SQL做了不同程度的扩展,目前流行的对标准SQL的扩展版本:PL/SQL、Transact-SQL。
- PL/SQL:基于Oracle数据库的通信语言,已集成到Oracle的服务器中,可运行与任何的Oracle开发环境中,许多厂商提供了基于Oracle数据库的专用的访问工具:TOAD、Navicat和PL/SQL Developer。
- Transact-SQL:基于Sybase与Microsoft SQL Server中的数据库通信语言。其主要运行环境:SQL Server Management Studio和SQLCMD。
5.2 SQL语句的分类
- DDL:DROP、CREATE、ALTER等语句
- DQL:SELECT语句
- DML:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句
- DCL:GRANT、REVOKE、COMMIT、ROLLBACK等语句
- 事务控制语言:
5.3 SQL语言的特点
SQL是关系数据库中操作的标准语言,一种非过程化语言
在数据库应用开发中,通过使用SQL语言可以完成数据表的创建、授予或者回收用户对数据库的存取权限、对数据进行增删改查等功能。
特点:
- 简单易学,语言结构简便- 非过程化语言- 采用集合操作方式- SQL语言能够嵌入到高级语言中
5.4 常用数据类型
为数据表的每一列选择合适的数据类型。数据类型:
- 整数类型
- 浮点类型
- 、数值类型
- 日期与时间类型
- 字符类型
- 二进制类型
- ….
5.5SQL语言书写规范
- 不区分大小写,一般关键字(SELECT,FROM,WHERE)需大写
- 不区分列名和对象名的大小写
- 对数据库中的数据是大小写敏感的
- 单行注释可用“--",后面至少一个空格
- 多行注释可用”/*注释内容*/“
- 语句可写在一行,也可多行
MySQL学习书单
《MySQL从入门到精通》
已保存至百度网盘
内容介绍:《MySQL从入门到精通》以零基础讲解为宗旨,用实例引导读者学习,深入浅出地介绍了MySQL的相关知识和实战技能。
《MySQL从入门到精通》第1篇【基础知识】主要讲解MySQL的安装与配置、MySQL数据库的基础知识、MySQL管理工具的使用以及数据库的基本操作等;第2篇【核心技术】主要讲解数据表的基本操作、MySQL的数据类型和运算符、MySQL函数、查询语句、存储过程与函数、触发程序以及视图等;第3篇【高级应用】主要讲解MySQL的备份和恢复、MySQL的复制、MySQL的日志管理、MySQL分布式应用、MySQL缓存的配置和使用以及MySQL错误代码和消息的使用等;第4篇【项目实战】通过试卷管理系统、电动汽车分时租用平台和电动汽车GPS定位系统三个实战案例,介绍了完整的MySQL数据系统开发流程。
《MySQL从入门到精通》适合任何想学习MySQL的读者,无论您是否从事计算机相关行业,是否接触过MySQL,均可通过学习快速掌握MySQL的开发方法和技巧。(电子版暂不提供光盘)
《SQL必知必会》
已保存至百度网盘
了解数据库的第一步,最好的方法就是去使用它,无论数据库内部的原理有多复杂,我们平时使用的时候仍然还是在写sql,掌握好基础的sql语法,是最重要的第一步,我们平常使用的CRUD命令,统称为DML,而像是建表、修改表结构,以及删除表的命令,则叫做DDL。其实,sql命令并没有你想象的那么简单,比如sql中的join、索引以及group by和union等命令的用法,也需要你去慢慢学习和理解,实践是学习sql最好的方法。
这本《sq必知必会》由浅入深地介绍了我们常用的一些sql,本身难度不大,但是用于快速上手sql是再合适不过的一本书了,很多时候,如果把本书作为工具书来看,也是非常实用的。
本书作者是Adobe公司开发者关系部总监,世界知名的技术作家,在计算机产品开发、支持、培训和营销等方面拥有20多年的丰富经验。多年来,他撰写了SQL、MySQL、正则表达式、JSP、WAP和Windows开发等方面的十多部技术图书,其中不少已被翻译为多种语言在世界各地出版发行并成为畅销经典。读者可以通过他的个人网站forta.com了解更多信息。
《MySQL必知必会》
众所周知,市面上最流行的数据库是MySQL,因为其开源、免费的特性而大受欢迎,新手入门学习数据库用的一定也是MySQL,因此《SQL必知必会》的作者在广大群众的呼声中又写了这一本《MySQL必知必会》本书基本上可以理解为是《SQL必知必会》的MySQL定制版,除了介绍基本的sq用法之外,还介绍了很多MySQL的常用功能,整体来看还是比较基础的。
Ben Forta,世界知名的技术作家,也是Adobe技术界知名的专家之一,目前担任Adobe公司的高级技术推广专家。他具有计算机行业20多年工作经验,多年来撰写了十几本技术图书,包括《正则表达式必知必会》、《SQL必知必会》(人民邮电出版社出版)等世界性的畅销书,已被翻译为十几种文字。
《MySQL CookBook》
接下来这本书就厉害了,原作者和译者都是数据库领域的资深大牛,如果说学习SQL和基本功能是为了让开发工程师更好地使用SQL来实现业务功能,而这本书则涵盖了MySQL开发、运维和管理的各类内容,比如如何进行MySQL的配置,如何使用事务,并且还介绍了MySQL自带的二进制日志,数据的备份和恢复等内容,不管是对于一线开发者还是DBA同学,都有着很好的参考价值。
作者简介:Karthik Appigatla是一位备受尊敬的数据库架构师,他在性能调优领域闻名于世。他为世界各地的许多公司提供设计咨询、性能调优、数据库架构设计和培训服务。在过去十年中,他曾供职于雅虎、Pythian和Percona等公司。目前,他任职于Linkedln,在那里他发明了一种新的分析查询方法,并于2017年在都柏林的SRECon上发表了关于这个新发明的演讲。
《MysQL技术内幕:innodb存储引擎》
终于到了最后一本压轴的书了,上面三本书,虽然从难度上来看也是由浅入深,但始终还是围绕着SQL和MySQL的使用和管理,并没有深入MySQL的实现原理进行探讨,如同隔靴摇痒,好不痛快。对于后端工程师以及数据库研发人员来说,了解数据库的使用是远远不够的,必须要深入其原理进行学习,才能够更好地进行sql优化以及数据库的优化,更重要的是,遇到了数据库问题,知道如何排查,需要考虑数据接入方案的时候,也可以更好地进行选型和实践。
MySQL数据库中有两种常见的存储引擎,一种是myisam,另一种就是innodb了,而实际上现在MySQL数据库大部分都在使用innodb引擎,而这个引擎也是MySQL实现数据库功能的核心所在,比如数据文件如何存储、索引是如何实现的,事务和锁又是如何通过存储引擎来实现的,这些后端面试进阶的知识点,这本书里都有相应的内容。市面上介绍MySQL存储引擎的书并不多,不管是面试还是平时做数据库调优,本书都非常值得一读。
姜承亮(David Jiang),资深MySQL数据库专家,擅长于数据库的故障诊断、性能调优、容灾处理、高可用和高扩展研究,同时一直致力于MySQL数据库底层实现原理的研究和探索。此外,对高性能数据库和数据仓库也有深刻而独到的理解。曾为MySQL编写了许多开源工具和性能扩展补丁,如广受好评的InnoDB引擎二级缓存项目。现任网易杭州研究院技术经理一职,负责MySQL数据库的内核开发,参与设计与开发MySQL数据库在网易云环境中的应用。
《零基础学SQL》
已保存至微云
《SQL基础教程.第3版》
已保存至百度网盘
《MySQL从入门到项目实战》
已保存至百度网盘
作品简介
本书采取“基础知识→核心应用→核心技术→高级应用→行业应用→项目实践”结构和“由浅入深,由深到精”的学习模式进行讲解。全书分为6篇29章。首先讲解MySQL的安装与配置、MySQL数据库的基础知识、MySQL管理工具的使用、数据表的基本操作、视图、MySQL的数据类型和运算符、MySQL函数、查询语句、数据与索引、存储过程与存储函数以及触发器,然后讲解数据库权限管理与恢复、数据库的复制、日志管理、结构分布式应用、查询缓存、错误代码和消息的使用等,最后在项目实践环节重点介绍MySQL数据库在金融银行、互联网、信息资讯等行业开发中的应用,另外通过论坛管理系统、企业会员管理系统和新闻发布系统的开发实践展现项目开发的全过程。编写本书的目的是从多角度全方位竭力帮助读者快速掌握软件开发技能,构建从高校到社会与企业的就职桥梁,让有志于从事软件开发的读者轻松步入职场。本书适合MySQL入门者,也适合MySQL数据库管理员以及想全面学习MySQL数据库技术以提升实战技能的人员使用。
Oracle书单

涂抹Oracle下载链接百度网盘
Oracle9i&10g编程艺术:深入数据库体系结构PDF 密码ante
管理事务处理
安全管理
超级用户:root,日常操作中不要使用
普通用户:
MySQL用户账号和信息存储在名为 mysql 的数据库中,当有需要时可访问它
grant和revoke可在几个层次上控制访问权限:
- 整个服务器,使用grant all和revoke all
- 整个数据库,on database.*
- 特定的表,on database.table
- 特定的列,
- 特定的存储过程 ```sql — 访问mysql use mysql; select user from user;
— 创建用户账号 create user ben identified by ‘password’; — identified by指定的口令为纯文本 — 另一种方法是使用grant或insert grant语句,不建议
— 重命名用户账号 rename user ben to name2; — 更改口令(密码) set password for name2 = password(‘password2’); set password = password(‘password2’); — 更改自己的口令
— 删除用户账号 drop user name2
— 查看用户账号的权限 show grants for name2; — usage on .表示usage根本没有权限
— 设置用户权限 grant select on crashcourse. to name2; — 在crashcourse数据库的所有表使用select — 撤销特定权限 revoke select on crashcourse. from name2; ```
数据库维护
备份
MySQL数据库是基于 磁盘的文件,普通的备份系统和例程就能备份MySQL的数据,但是,由于文件总是处于打开和使用的状态,普通的备份不一定总是有效。
可能的解决方案
- 命令行实用程序mysqldump转储所有 数据库内容到某个外部文件
- 命令行实用程序mysqlcopy从一个数据库复制所有数据
- backup table或select into outfile语句转储所有数据到某个外部文件,这个文件必须不存在,数据可以用restore table复原
备份前使用flush tables语句刷新数据,确保所有数据写到磁盘(包括索引)
维护
- analyze table:检查表键是否正确
- check table:针对许多问题检查表
- changed:检查自最后一次检查以来改动过的表
- extended:执行彻底的检查
- fast:只检查未正常关闭的表
- medium:检查所有被删除的链接并进行键检验
-
诊断启动问题
排除系统启动问题时尽量手动启动服务器
—help显示帮助——一个选项列表
- — safe-mode装载减去某些最佳配置的服务器
- —verbose显示全文本消息
-
查看日志文件
错误日志:启动和关闭问题、任意关键错误的细节,日志名:/data/hostname.err,可用—log-error命令行选项更改
- 查询日志:所有SQL活动,文件大,日志名:/data/hostname.log,用—log更改
- 二进制日志:记录更新过数据的所有语句,日志名:/data/hostname-bin,用—log-bin更改
- 缓慢查询日志:记录执行缓慢的任何查询,用于定位优化位置,日志名:/data/hostname-slow.log,—log-slow-queries更改
使用日志时,用flush logs语句刷新和重新开始所有日志文件。
性能调优
关键的生产DBMS运行在专用服务器上
- 调整内存分配、缓冲区大小等。(查看当前设置:show variables;show status;)
- 一个任务缓慢导致所有任务缓慢,查看所有活动进程:show processlist,结束某进程:kill(管理员权限)
- 同一条select语句多种编写方法,试验联结、并、子查询,比较性能
- explain语句让MySQL解释如何运行一条select语句
- 存储过程执行比一条一条执行其中的各条SQL语句快
- 使用正确的数据类型
- 决不检索比需求还要多的数据,指定需求列而非全部列
- 导入数据时 ,关闭自动提交
- 必须索引数据库表以改善数据检索的性能
- 使用多条select语句并用union连接比select语句采用多个or条件性能更优
- 索引改善检索性能,但损害数据插入、删除和更新的性能,若数据不经常被搜索,必要不使用索引
- like很慢,最好使用fulltext
- 理想的优化和配置适应不断变化的数据库实体
- 规则可能被打破

