MySQL使用和操作总结(《MySQL必知必会》读书笔记)
简介
MySQL是一种DBMS,即它是一种数据库软件。DBMS可分为两类:一类是基于共享文件系统的DBMS,另一类是基于客户机——服务器的DBMS。前者用于桌面用途,通常不用于高端或更关键应用。
MySQL是基于客户机——服务器的数据库。客户机——服务器应用分为两个不同的部分。服务器部分是负责所有数据访问和处理的软件。这个软件运行在称为数据服务器的计算机上。客户机是与用户打交道的软件。
使用MySQL
连接数据库
在操作系统命令提示符下输入 mysql 将出现如下提示:
C:\Users\greenhat>mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.6.38 MySQL Community Server (GPL) Copyright (c) 2000, 2017, 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>
如上述界面提示即打开了数据库的连接。也可用root用户打开:mysql -u root -p。这是会提示输入密码,如果安装时未设置密码按回车即可。如果软件安装时未设置环境变量,需要在所安装目录的/bin下输入mysql方可启动。
注意:
a.命令输入在mysql>之后;
b.命令用;或\g结束;
c.输入quit或exit退出命令行实用程序。
选择数据库
最初连接到MySQL时,没有数据库打开供你使用。这时可输入 SHOW DATABASES 查看已有的数据库:
mysql> SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| student |
| students |
| test |
+--------------------+
6 rows in set (0.02 sec)
从已有的数据库中选择一个数据库。可用关键字USE:
mysql> USE students;
Database changed
mysql>
使用SHOE TABLES 查看数据库中存在的表:
mysql> SHOW TABLES;
+--------------------+
| Tables_in_students |
+--------------------+
| student1 |
| students |
| teacher |
| teacher1 |
+--------------------+
4 rows in set (0.08 sec)
接下来可用SQL语句来对数据库进行新建表格等操作。
用户管理与维护
MySQL服务器的安全基础是:用户应该对他们需要的数据具有适当的访问权限,既不能多也不能少。例如多数用户只需对表进行读和写,某些用户(管理员)可能需要处理用户账号的权限。MySQL创建一个名为root的用户账号,它对整个MySQL服务具有完全的控制。你可能已经试过用root账号登陆,不过在现实世界的日常工作中,绝对不能随便使用root。应该创建一系列的账号,有的用于管理,有的供用户使用,有的供开发人员使用,等等。
MySQL用户账号和信息存储在名为 mysql 的MySQL数据库中:
mysql> USE mysql;
Database changed mysql> SELECT user FROM user;
+------+
| user |
+------+
| root |
+------+
创建用户账号
创建一个新的用户账号,使用CREATE USER语句,如下:
mysql> CREATE USER jack;
Query OK, 0 rows affected (0.48 sec)
这时再列出用户就能看到我们刚才新建的用户了。我们也可以在创建用户时添加口令,使用IDENTIFIED BY PASSWORD,如下:
mysql> CREATE USER jackson IDENTIFIED BY '';
Query OK, 0 rows affected (0.06 sec)
重命名一个用户账号时,使用RENAME USER语句,如下:
mysql> RENAME USER jack TO ben;
Query OK, 0 rows affected (0.04 sec)
删除用户账号
删除一个用户账号,使用DROP USER语句,如下:
mysql> DROP USER ben;
Query OK, 0 rows affected (0.00 sec)
设置访问权限
在创建账号后,必须接着分配访问权限。新创建的账号没有访问权限。它们能登陆MySQL,但不能看到数据,不能执行任何数据操作。
为看到赋予用户账号的权限,使用SHOW GRANTS FOR 语句,如下:
mysql> SHOW GRANTS FOR jackson;
+-------------------------------------------------------------------------------
-------------------------+
| Grants for jackson@%
|
+-------------------------------------------------------------------------------
-------------------------+
| GRANT USAGE ON *.* TO 'jackson'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105
EE4568DDA7DC67ED2CA2AD9' |
+-------------------------------------------------------------------------------
-------------------------+
1 row in set (0.04 sec)
输出结果显示用户jackson有一个权限USAGE ON *.* 。USAGE表示根本没有权限。
为设置权限,使用GRANT语句。GRANT要求你至少给出以下信息:
a.要授予的权限;
b.被授予访问权限的数据库和表。
c.用户名。
下面给出GRANT的用法例子:
mysql> GRANT SELECT ON students.* TO jackson;
Query OK, 0 rows affected (0.09 sec)
此GRANT允许用户jackson在students.*(students数据库的所有表)上使用SELECT 。通过授权SELECT访问权限,用户jackson对students数据库中所有的数据具有只读访问权限。
查看更改后的用户的权限:
mysql> SHOW GRANTS FOR jackson;
+-------------------------------------------------------------------------------
-------------------------+
| Grants for jackson@%
|
+-------------------------------------------------------------------------------
-------------------------+
| GRANT USAGE ON *.* TO 'jackson'@'%' IDENTIFIED BY PASSWORD '*6BB4837EB74329105
EE4568DDA7DC67ED2CA2AD9' |
| GRANT SELECT ON `students`.* TO 'jackson'@'%'
|
+-------------------------------------------------------------------------------
-------------------------+
2 rows in set (0.04 sec)
GRANT的饭操作为REVOKE,用来撤销特定的权限。如下:
mysql> REVOKE SELECT ON students.* FROM jackson;
Query OK, 0 rows affected (0.01 sec)
GRANT和REVOKE可在几个层次上控制访问权限:
a.整个服务器,使用GRANT ALL 和 REVOKE ALL ;
b.整个数据库,使用ON database.* ;
c.特定的表,使用ON database.table ;
d.特定的列;
e.特定的存储过程。
更多具体的权限可查看相关官方文档。
更改口令
更改用户口令,可使用SET PASSWORD 语句。如下:
mysql> SET PASSWORD FOR jackson=Password('');
Query OK, 0 rows affected (0.05 sec)
新口令必须传递到Password()函数进行加密。
备份数据
像所有数据一样,MySQL的数据也必须经常备份。下面列出可进行备份的方法:
a.私用命令行实用程序mysqldump转存所有数据库内容到某个外部文件。在进行常规备份前这个程序应该正常运行,以便正确的备份转存文件。
b.可用命令行实用程序mysqlhotcopy从一个数据库复制所有数据。
c.可以使用MySQL的BACKUP TABLE 或SELECT INTO OUTFILE 转储所有数据到外部文件。这两条语句都接受将要创建的系统文件名,此文件必须存在,否则会出错。数据库可用RESTORE TABLE 来复原。
数据库维护
MySQL提供一系列的语句,可以用来保证数据库正确和正常运行。
ANALYZE TANLE用来检查表键是否正确。如下:
mysql> ANALYZE TABLE students;
+-------------------+---------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+-------------------+---------+----------+----------+
| students.students | analyze | status | OK |
+-------------------+---------+----------+----------+
1 row in set (1.12 sec)
此外还可以用CHECH TABLE用来针对多个问题进行检查。
参考文献
《MySQL必知必会》Ben Forta,人民邮电出版社。
MySQL使用和操作总结(《MySQL必知必会》读书笔记)的更多相关文章
- 《MySQL 必知必会》读书总结
这是 <MySQL 必知必会> 的读书总结.也是自己整理的常用操作的参考手册. 使用 MySQL 连接到 MySQL shell>mysql -u root -p Enter pas ...
- 《MySQL必知必会》[01] 基本查询
<MySQL必知必会>(点击查看详情) 1.写在前面的话 这本书是一本MySQL的经典入门书籍,小小的一本,也受到众多网友推荐.之前自己学习的时候是啃的清华大学出版社的计算机系列教材< ...
- mysql必知必会
春节放假没事,找了本电子书mysql必知必会敲了下.用的工具是有道笔记的markdown文档类型. 下面是根据大纲已经敲完的章节,可复制到有道笔记的查看,更美观. # 第一章 了解SQL## 什么是S ...
- 《MySQL必知必会》整理
目录 第1章 了解数据库 1.1 数据库基础 1.1.1 什么是数据库 1.1.2 表 1.1.3 列和数据类型 1.1.4 行 1.1.5 主键 1.2 什么是SQL 第2章 MySQL简介 2.1 ...
- mysql学习--mysql必知必会
上图为数据库操作分类: 下面的操作參考(mysql必知必会) 创建数据库 运行脚本建表: mysql> create database mytest; Query OK, 1 row ...
- mysql 必知必会总结
以前 mysql 用的不是很多, 2 天看了一遍 mysql 必知必会又复习了一下基础. 200 页的书,很快就能看完, 大部分知识比较基础, 但还是了解了一些以前不知道的知识点.自己做一个备份,随 ...
- MySql必知必会实战练习(二)数据检索
在上篇博客MySql必知必会实战练习(一)表创建和数据添加中完成了各表的创建和数据添加,下面进行数据检索和过滤操作. 1. Select子句使用顺序 select--->DISTINCT---& ...
- MySql必知必会实战练习(三)数据过滤
在之前的博客MySql必知必会实战练习(一)表创建和数据添加中完成了各表的创建和数据添加,MySql必知必会实战练习(二)数据检索中介绍了所有的数据检索操作,下面对数据过滤操作进行总结. 1. whe ...
- 读《MySql必知必会》笔记
MySql必知必会 2017-12-21 意义:记录个人不注意的,或不明确的,或不知道的细节方法技巧,此书250页 登陆: mysql -u root-p -h myserver -P 9999 SH ...
随机推荐
- jquery tab选项卡、轮播图、无缝滚动
最近做一个页写了一个星期,觉得自己对jquery还是很不熟悉 自己查了一下资料写了几个封装好的tab选项卡.轮播图.无缝滚动 $(function(){ //tab选项卡 jQuery.tab=fun ...
- 在HTML代码中要如何插入空格?
超文本标记语言(HTML)会自动忽略空格.平常在编写代码的时候,用空格键.Tab键以及回车键产生的空格,都会被HTML自动忽略.那么我们该用什么方法来实现HTML的空格效果呢?有专门的空格代码吗?不少 ...
- ACM ICPC, Amman Collegiate Programming Contest (2018) Solution
Solution A:Careful Thief 题意:给出n个区间,每个区间的每个位置的权值都是v,然后找长度为k的区间,使得这个区间的所有位置的权值加起来最大,输出最大权值, 所有区间不重叠 思路 ...
- zw版【转发·台湾nvp系列Delphi例程】HALCON DispArc
zw版[转发·台湾nvp系列Delphi例程]HALCON DispArc zw版[转发·台湾nvp系列Delphi例程]HALCON DispArc----------RAD Studio XE D ...
- Java Character 类
Character 类用于对单个字符进行操作. Character 类在对象中包装一个基本类型 char 的值 实例 char ch = 'a'; // Unicode 字符表示形式 char uni ...
- java类同时引用父类和接口的成员变量,需要指明是父类的还是接口的
code: package com.qhong; public class Main extends B implements A{ public static void main(String[] ...
- [BZOJ2834]回家的路
Description Input Output Sample Input 2 1 1 2 1 1 2 2 Sample Output 5 思路还是很简单的,然而最短路打错各种对拍各种调了一早上 ...
- 欧几里德和扩展欧几里德详解 以及例题CodeForces 7C
欧几里德定理: 对于整数a,b来说,gcd(a, b)==gcd(b, a%b)==d(a与b的最大公约数),又称为辗转相除法 证明: 因为a是d的倍数,b是d的倍数:所以a%d==0:b%d==0: ...
- JAVA8新特性——Lamda表达式
JAVA9都要出来了,JAVA8新特性都没搞清楚,是不是有点掉队哦~ Lamda表达式,读作λ表达式,它实质属于函数式编程的概念,要理解函数式编程的产生目的,就要先理解匿名内部类. 先来看看传统的匿名 ...
- 【postman】利用谷歌浏览器插件生成代码
Postman这款工具可以让你很方便的测试你的Web API,那如果你实在是没办法用Postman,必须手写代码,又或者你有别的需求是Postman没法实现的,你必须写一个特殊的script或App来 ...