从 0 到 1 MySQL 系列(一):MySQL 的安装与使用
(一)安装 MySQL
MySQL 是一个 C/S 架构的关系型数据库软件,最通用的安装方式为 Docker 安装:
- 安装 Docker 镜像:
docker pull mysql
; - 启动 MySQL 服务器:
docker run --name <container name> -v <data directory name>:/var/lib/mysql -p <port>:3306 -e MYSQL_ROOT_PASSWORD=<root password> -d mysql:latest
简单介绍下上面一条命令:
-v <data directory name>:/var/lib/mysql
指定了容器内部数据与宿主机本地磁盘目录的映射关系;-p <port>:3306
:指定了宿主机端口与容器内部端口(默认为 3306)映射关系;
注意:生产环境中,不要直接将密码输入至命令行中,容易被攻击者通过 history 知晓 root 密码,而应该先把密码存储在文件中,在 shell 命令中读取文件内容的方式输入 root 密码。
在 shell 中运行 docker ps
命令查看启动的 MySQL 数据库是否正常运转,出现下述画面则表示一切顺利:
(二)连接 MySQL 数据库
仅仅是安装成功了 MySQL 数据库是没有意义的,要能够真正使用 MySQL 数据库,我们还需要 MySQL 客户端,并成功连接 MySQL 数据库。
我们可以通过三种方式连接 MySQL 数据库:
- 在容器内部连接;
- 在宿主机中通过 shell 连接;
- 服务端程序连接;
- GUI 工具连接;
我们分别看下如何连接:
1. 在容器内部连接
- 运行命令
docker exec -it <container name> /bin/bash
进入 mysql 容器; - 运行命令
mysql -u root -p
后,输入开始设置的 root 密码,即可进入 mysql 命令行模式;
2. 在宿主机中通过 shell 连接
- 在宿主机中执行 shell 命令:
mysql -h 127.0.0.1 -P <your port> -u root -p
; - 输入开始设置的 root 密码,即可成功连接 mysql 服务器;
注意:
- 宿主机必须先安装 mysql 客户端才可通过 shell 命令连接 mysql 数据库,在 Mac 上推荐的安装方式是:
brew install mysql
; your port
为 mysql 容器创建时指定的关联端口,务必在启动容器时指定关联端口;
3. 在服务端程序中连接
我们以 node.js 语言为例,需要引入 mysql
npm 包,为了方便演示,使用 koa
框架:
const Koa = require('koa')
const mysql = require('mysql')
const app = new Koa()
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: <root password>,
port: <the port you set, default is 3306>,
database: <database name>
})
connection.connect()
app.use(async (ctx) => {
ctx.body = 'hello world'
connection.query(`
<your SQL language>
`)
})
app.listen(3000)
注意:若安装的 mysql 版本 >= 8,则此时运行 node index.js
时程序会报错:Client does not support authentication protocol requested by server; consider upgrading MySQL client
这是由于 mysql 服务器版本采用了当下 mysql npm 包不兼容的加密方式导致的,解决方法如下:
在 mysql 命令行依次输入以下命令:
USE mysql;
:切换为 mysql 数据库;ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY <password>;
:更改加密方式为mysql_native_password
;FLUSH PRIVILEGES;
:更新配置;
4. GUI 工具连接
我在 Mac 上使用的 MySQL 客户端工具为 Sequel Ace(Sequel Pro 2016 年后就不再维护了,该软件为社区志愿者维护的版本)。连接方式如下:
(三)小结
至此我们记录了如果安装 MySQL 数据库以及各种数据库连接方式。一定要注意在连接数据库的时候保证 IP,端口号,用户名和密码正确。