前言

在学习node框架egg.js过程中,对数据库的操作是必须的,我这里选择的是mysql数据库。在使用egg.js过程中,使用egg-mysql插件来处理是没有什么问题的,这里就不多说了。这里我选择使用egg-sequelize插件来对数据库进行操作。

mac环境下安装mysql

首先第一种方式当然是到官网下载文件进行安装,我没有选择这种方式就不多说了,我使用的是mac的Homebrew方式进行安装的。

  1. 安装Homebrew

    1. /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. brew doctor确认brew在正常工作。

  3. brew update更新包。
  4. brew install mysql 安装mysql。
  5. 启动mysql服务

    1. $ mysql.server start
    2. Starting MySQL
    3. . SUCCESS!
  6. mysql安装基本配置

    1. $ mysql_secure_installation
    2. Securing the MySQL server deployment.
    3. Connecting to MySQL using a blank password.
    4. VALIDATE PASSWORD PLUGIN can be used to test passwords
    5. and improve security. It checks the strength of password
    6. and allows the users to set only those passwords which are
    7. secure enough. Would you like to setup VALIDATE PASSWORD plugin?
    8. // 提示是否设置密码
    9. Press y|Y for Yes, any other key for No: y
    10. // 提示选择密码强度等级
    11. There are three levels of password validation policy:
    12. LOW Length >= 8
    13. MEDIUM Length >= 8, numeric, mixed case, and special characters
    14. STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
    15. Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
    16. Please set the password for root here.
    17. // 按照所选的密码强度要求设定密码
    18. New password:
    19. Re-enter new password:
    20. // 提示密码强度50,不符合要求重新设置密码
    21. Estimated strength of the password: 50
    22. Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
    23. ... Failed! Error: Your password does not satisfy the current policy requirements
    24. New password:
    25. Re-enter new password:
    26. // 提示密码强度100,符合要求继续进行
    27. Estimated strength of the password: 100
    28. Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
    29. By default, a MySQL installation has an anonymous user,
    30. allowing anyone to log into MySQL without having to have
    31. a user account created for them. This is intended only for
    32. testing, and to make the installation go a bit smoother.
    33. You should remove them before moving into a production
    34. environment.
    35. // 提示删除默认无密码用户
    36. Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
    37. Success.
    38. Normally, root should only be allowed to connect from
    39. 'localhost'. This ensures that someone cannot guess at
    40. the root password from the network.
    41. // 提示禁止远程root登录
    42. Disallow root login remotely? (Press y|Y for Yes, any other key for No) : no
    43. ... skipping.
    44. By default, MySQL comes with a database named 'test' that
    45. anyone can access. This is also intended only for testing,
    46. and should be removed before moving into a production
    47. environment.
    48. // 提示删除默认自带的test数据库
    49. Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
    50. - Dropping test database...
    51. Success.
    52. - Removing privileges on test database...
    53. Success.
    54. Reloading the privilege tables will ensure that all changes
    55. made so far will take effect immediately.
    56. // 提示是否重新加载privilege tables
    57. Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
    58. Success.
    59. All done!
  7. 测试登陆mysql

    1. $ mysql -u root -p
    2. Enter password:
    3. Welcome to the MySQL monitor. Commands end with ; or \g.
    4. Your MySQL connection id is 4
    5. Server version: 5.7.21 Homebrew
    6. Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    7. Oracle is a registered trademark of Oracle Corporation and/or its
    8. affiliates. Other names may be trademarks of their respective
    9. owners.
    10. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
    11. mysql>

egg-sequelize连接本地数据库

简单写下部分配置,其他详细的请看官网

  1. config.sequelize = {
  2. dialect: 'mysql',
  3. host: '127.0.0.1',
  4. port: 3306,
  5. database: 'learn',
  6. username: 'root',
  7. password: '12345678',
  8. operatorsAliases: false
  9. };

连接到本地数据库

连接过程中报错

显示的错误是:
egg.js SequelizeConnectionError: Client does not support authentication protocol requested by ser...
解决方法是:
进入mysql交互环境然后执行:

  1. ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '自己的密码';