如何利用typeorm+mysql设计博客系统(一)

发表于 2020-02-20
更新于 2024-05-23
分类于 技术专栏
阅读量 4041
字数统计 4448

本文分为两篇,第一篇讲解MySQL的安装和简单使用,第二篇讲解基于typeorm的数据库操作。

本文MySQL版本使用的是8.0.18,typeorm使用的版本是0.2.19

1、MySQL8数据库的安装和使用

MySQL8数据库的安装挺折腾人的,整个步骤其实挺简单的,主要卡在了这个错误上了:

Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2): image not found

现在我们开始一步步安装。

1.1、MySQL8的下载(MacOS版本)

从官网下载MySQL的执行程序,如果从官网下载比较慢的话,可以从我的百度云盘上下载:传送 门, 提取码: sqn6。

1.2、MySQL8的安装

按照正常软件安装即可,截图贴一下两个重要的步骤:

选择强密码类型

给root用户设置密码

安装完成后记得设置一下环境变量:~/.bash_profile

export PATH=$PATH:/usr/local/go/bin:/usr/local/MySQL-8.0.18-macos10.14-x86_64/bin
export NODE_OPTIONS="--max-old-space-size=4096"

更新生效刚才的配置:

source ~/.bash_profile

1.3、登录MySQL

我们先看一下MySQL8的身份验证方式:

MySQL> show variables like 'default_authentication_plugin';
+-------------------------------+-----------------------+
| Variable_name                 | Value                 |
+-------------------------------+-----------------------+
| default_authentication_plugin | caching_sha2_password |
+-------------------------------+-----------------------+
1 row in set (0.01 sec)

MySQL> select user,host,plugin from MySQL.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| MySQL.infoschema | localhost | caching_sha2_password |
| MySQL.session    | localhost | caching_sha2_password |
| MySQL.sys        | localhost | caching_sha2_password |
| root             | localhost | caching_sha2_password |
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)

在这里必须先普及一下MySQL8的两个主要角色管理的变化:

  • 验证插件和密码加密方式的变化

    在 MySQL 8.0 中,caching_sha2_password是默认的身份验证插件而不是之前版本的MySQL_native_password,默认的密码加密方 式是SHA2

  • 用户授权和修改密码

    MySQL 8.0 的用户授权语句和之前版本有所区别,老版本的常用授权语句在 MySQL 8.0 版本中 已不能使用,如使用旧版本授权语句会报 错。在 MySQL 8.0 用之前版本授权语句创建用户。

    MySQL> GRANT ALL PRIVILEGES ON *.* TO `dev`@`%` IDENTIFIED BY '000000' WITH GRANT OPTION;
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IDENTIFIED BY '000000' WITH GRANT OPTION' at line 1
    

    在 MySQL 8.0 版本中正确授权语句。

    MySQL> CREATE USER 'mike'@'%' IDENTIFIED BY '000000';
    MySQL> GRANT ALL ON *.* TO 'mike'@'%' WITH GRANT OPTION;
    

1.4、Sequel Pro连接

Sequel Pro不要下载稳定版本,需要下载Build版本,否则会在选择完数据库的时候crash掉,如下图:

我一开始用最新版本的1.1.2,后来发现这个版本发布好久了,一直没有更新,所以我们得用最新测试版本:传送 门,当前我用的是:

然后我开始用root用户登录MySQL,就会出现之前开始提到的问题了,怎么解决呢?

因为目前客户端不支持这个插件,所以我们只能将MySQL服务器的认证方式降级为原先的MySQL_native_password

1.4.1、解决办法

MySQL> ALTER USER 'root'@'localhost' IDENTIFIED WITH MySQL_native_password BY '12345678';
Query OK, 0 rows affected (0.01 sec)
MySQL> select user,host,plugin from MySQL.user;
+------------------+-----------+-----------------------+
| user             | host      | plugin                |
+------------------+-----------+-----------------------+
| MySQL.infoschema | localhost | caching_sha2_password |
| MySQL.session    | localhost | caching_sha2_password |
| MySQL.sys        | localhost | caching_sha2_password |
| root             | localhost | MySQL_native_password | => 验证方式变了!!
+------------------+-----------+-----------------------+
4 rows in set (0.00 sec)
MySQL> flush privileges;
Query OK, 0 rows affected (0.01 sec)

再回到Sequel pro登录就可以登录上了。

1.5、新建数据库

接着新建数据库,因为我们的博文需要支持emoji字符,而emoji字符占用的字节数和别的普通字符不一样,所以新建的时候我们需要选择正确的字 符集:

否则会报诸如这种错误:Incorrect string value: '\xF0\x9F\x98\xAD",...' for column

如果使用命令行创建数据库也是可以的:

MySQL > create database douMiBlog
MySQL > create user dev@'localhost' identified by '123456';
MySQL > grant all privileges on douMiBlog.* to 'dev'@'localhost';
MySQL > flush privileges;

Tips: 查看所有的用户:select * from MySQL.user;,显示所有授权信息:show grants;

公众号关注一波~

微信公众号

关于评论和留言

如果对本文 如何利用typeorm+mysql设计博客系统(一) 的内容有疑问,请在下面的评论系统中留言,谢谢。

网站源码:linxiaowu66 · 豆米的博客

Follow:linxiaowu66 · Github