如何利用typeorm+mysql设计博客系统(一)
本文分为两篇,第一篇讲解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;
公众号关注一波~
网站源码:linxiaowu66 · 豆米的博客
Follow:linxiaowu66 · Github
关于评论和留言
如果对本文 如何利用typeorm+mysql设计博客系统(一) 的内容有疑问,请在下面的评论系统中留言,谢谢。