从 0 到 1 MySQL 系列(一):MySQL 的安装与使用

(一)安装 MySQL

MySQL 是一个 C/S 架构的关系型数据库软件,最通用的安装方式为 Docker 安装:

  1. 安装 Docker 镜像:docker pull mysql
  2. 启动 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

简单介绍下上面一条命令:

  1. -v <data directory name>:/var/lib/mysql 指定了容器内部数据与宿主机本地磁盘目录的映射关系;
  2. -p <port>:3306:指定了宿主机端口与容器内部端口(默认为 3306)映射关系;

注意:生产环境中,不要直接将密码输入至命令行中,容易被攻击者通过 history 知晓 root 密码,而应该先把密码存储在文件中,在 shell 命令中读取文件内容的方式输入 root 密码。

在 shell 中运行 docker ps 命令查看启动的 MySQL 数据库是否正常运转,出现下述画面则表示一切顺利:

Docker mysql 镜像官方文档

(二)连接 MySQL 数据库

仅仅是安装成功了 MySQL 数据库是没有意义的,要能够真正使用 MySQL 数据库,我们还需要 MySQL 客户端,并成功连接 MySQL 数据库。
我们可以通过三种方式连接 MySQL 数据库:

  1. 在容器内部连接;
  2. 在宿主机中通过 shell 连接;
  3. 服务端程序连接;
  4. GUI 工具连接;

我们分别看下如何连接:

1. 在容器内部连接

  1. 运行命令 docker exec -it <container name> /bin/bash 进入 mysql 容器;
  2. 运行命令 mysql -u root -p 后,输入开始设置的 root 密码,即可进入 mysql 命令行模式;

2. 在宿主机中通过 shell 连接

  1. 在宿主机中执行 shell 命令: mysql -h 127.0.0.1 -P <your port> -u root -p
  2. 输入开始设置的 root 密码,即可成功连接 mysql 服务器;

注意:

  1. 宿主机必须先安装 mysql 客户端才可通过 shell 命令连接 mysql 数据库,在 Mac 上推荐的安装方式是:brew install mysql
  2. 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 命令行依次输入以下命令:

  1. USE mysql;:切换为 mysql 数据库;
  2. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY <password>;:更改加密方式为 mysql_native_password
  3. FLUSH PRIVILEGES;:更新配置;

4. GUI 工具连接

我在 Mac 上使用的 MySQL 客户端工具为 Sequel Ace(Sequel Pro 2016 年后就不再维护了,该软件为社区志愿者维护的版本)。连接方式如下:

(三)小结

至此我们记录了如果安装 MySQL 数据库以及各种数据库连接方式。一定要注意在连接数据库的时候保证 IP,端口号,用户名和密码正确。

原文地址:https://www.cnblogs.com/libinfs/p/13967133.html