学习记录:
1、mysql8.0版本安装之后连接不上数据库
参考:http://www.huyongdi.com/2018/05/16/nodejs-express-mysql%E5%B0%8F%E5%85%A8%E6%A0%88%E9%81%87%E5%88%B0%E7%9A%84%E5%9D%91/
Error: ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server; consider upgrading MySQL client
解决办法:安装的时候修改密码强度:默认的为强密码模式,手动选择下面一个宽松模式
Mac机修改:在系统偏好设置中点击MySql,然后按图索骥。
选择“Use Legacy Password Encryption”,点击OK即可。
2、Mac找不到mysql命令
mysql -u root -p
在home下的.bash_profile中添加export PATH=${PATH}:/usr/local/mysql/bin(确认路径正确)
然后调用source ~/.bash_profile使配置生效
这时如果还有问题:Access denied for user 'gemo'@'localhost' (using password: NO)
则重启Mysql服务即可。
如果不行,这里就帮不了你了。
3、命令行创建数据库create database xxx;
这里的分号是要的,不然没有效果,不知道为什么,一开始我没加分号,然后啥也没有,以为又出什么问题了(不知道这算不算)
4、经过以上操作,在node.js中已经可以正常使用mysql了。
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'test'// 如果没有则需要先创建,参考3,否则报错
});
connection.connect();
// sql是数据库SQL语句,params就是SQL语句携带的参数,params是一个数组
connection.query(sql, params, function (error, results) {
if (error) console.log(error);
console.log(results);
})
5、可以使用sequelize对mysql进行基本操作。具体的百度吧。
安装sequelize
npm install sequelize
如果这时候使用sequelize会报错:Please install mysql2 package manually
参考:https://segmentfault.com/q/1010000011808312
因为sequelize需要单独安装mysql依赖
npm install mysql2 -S
这时可以开始sequelize使用了:
const Sequelize = require('sequelize');
const sequelize = new Sequelize('test', 'root', 'password', {
host: 'localhost',
dialect: 'mysql',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
}
});
sequelize.authenticate()
.then(() => {
console.log('Connection has been established successfully.');
})
.catch(err => {
console.error('Unable to connect to the database:', err);
});
重点
1、索引、复位索引
适当的索引能减少SQL语句耗时
2、explain分析器
利用explain对SQL语句进行分析然后优化