参考文档:《MySQL必知必会》

一、安装MySQL数据库

MySQL官方网址:https://dev.mysql.com/
1. 安装教程

  • mysql8.0.13下载与安装图文教程 - 十么Shi - 博客园
  • mysql 8.0.11安装教程_电脑软件-百度经验
  • MySQL压缩包zip安装 - sfencs - 博客园
  • Mysql压缩包版zip的安装方法详解_孤云博客-CSDN博客_mysql压缩包安装

2. 错误解决

  • 由于找不到vcruntime140_1.dll,无法继续执行代码
  • net start mysql 发生系统错误2 系统找不到指定的文件

3. 样例表下载

  • 《MySQL必知必会》样例表“mysql_scripts.zip”下载

4. 数据库管理工具Navicat

  • Navicat官网

5. Java 驱动包下载

  • Java 连接 MySQL mysql-connector-java-bin.jar 驱动包的下载与安装

二、MySQL的基本使用

1. 登陆MySQL数据库

  • mysql -u root -p 以root用户登录mysql
参数描述
-u [user name]用户
-p密码,后方无需跟内容,MySQL会提示输入密码
-h [server name]主机名,不指定时,默认为localhost
-P [port number]端口号,不指定时,默认为3306

注:更多内容使用 MySQL --help 查看

2. 注意事项与退出

  • 登陆 MySQL 后,命令必须用 ; 或 \g 结束,仅按 Enter 不执行命令
  • 输入 help 或 \h 获得帮助,也可以获得某个命令的详细用法(如,输入 help select 获得 SELECT 命令的用法)
  • 输入 quit 或 exit 退出

3. 查看、创建与使用

  • SHOW DATABASES; 显示所有数据库
  • CREATE DATABASE [DB name]; 创建数据库,指定数据库名
  • USE [DB name]; 选择数据库,指定数据库名
  • SHOW TABLES; 选择某个数据库后,显示它的所有可用表
  • SHOW COLUMNS FROM [table name]; 显示某个表的所有列(字段)的定义,MySQL 还可以使用 DESCRIBE [table name]

显示某个表的列(字段)时,会显示每个列的如下内容:

参数描述
Field字段名
Type数据类型
Null是否允许NULL
Key键信息,主键会显示 PRI,外键会显示 MUL
Default默认值
Extra其他信息,自动增量会显示 auto_increment
  • SHOW STATUS; 显示服务器状态信息
  • SHOW CREATE DATABASE; 和 SHOW CREATE TABLE; 显示创建该数据库或表的语句
  • SHOW ERRORS; 和 SHOW WARNINGS; 显示服务器错误或警告消息

3. 导入样例表
解压 mysql_scripts.zip 后会有 create.sql 和 populate.sql 两个脚本文件,按照以下步骤导入:

mysql -u root -p                ##用 root 登录 mysql,然后输入密码
CREATE DATABASE crashcourse;    ##新创建一个名为 crashcourse(名字随意)的数据源
USE crashcourse;                ##进入 crashcourse 数据源
SOURCE create.sql路径;          ##执行 create.sql 脚本创建样例表
SOURCE populate.sql路径;        ##执行 populate.sql 脚本填充样例表

三、用户管理

1. 用户

  • USE mysql; 用户的基本信息存储在名为 mysql 的数据库的 user 表下,所以操作用户时,需要进入该数据库
  • SELECT User,Host from user; 查看所有用户
  • CREATE USER [user name] IDENTIFIED BY '[password]'; 创建用户并指定密码,使用 GRANT 和 INSERT 也可以创建,但是不推荐
  • RENAME USER [user oldname] TO [user newname] 更改用户名
  • DROP USER [user name] 删除用户

2. 权限管理

  • SHOW GRANTS FOR [user name] 查看用户的权限
  • GRANT SELECT ON crashcourse.* TO [user name] 授予用户关于 crashcourse.*(crashcourse 所有表)的 SELECT 权限
  • REVOKE SELECT ON crashcourse.* TO [user name] 撤销用户关于 crashcourse.*(crashcourse 所有表)的 SELECT 权限

可以在几个层次上控制访问权限:

层次执行
整个服务器GRANT ALL TO [username]
整个数据库GRANT SELECT ON [DB name].* TO [username]
特定的表GRANT SELECT ON [DB name].[table name] TO [username]

除了 SELECT 权限,还有其他权限,授权时用 , 间隔即可,如果授权所有权限,直接执行 GRANT ALL ON [DB name].* TO [user name]

3. 更改密码

  • 书本上使用 SET PASSWORD FOR [user name] = Password('[new password]'); 更改用户密码,已过时
  • 新版请使用 ALTER USER [user name] IDENTIFIED BY '[new password]'; 方式
  • 若要支持 Navicat 请使用 ALTER USER [user name] IDENTIFIED WITH mysql_native_password BY '[new password]';