最近,踩坑云服务器通过root
用户远程连接Mysql
数据库失败,Mysql
版本为 5.7.44,原因如下,因为root
用户权限过大,可能会有风险操作,可以新增其他用户来解决此问题,如果一定要用root
用户,必须给其设置密码并且赋予远程访问权限
启动数据库
systemctl start mysql
连接数据库,空密码
mysql -u root -p
查看数据库用户列表
use mysql;
select user,host from user;
localhost
代表只能本地访问,%
代表无限制访问
修改 root
密码,权限,5.7版本之后的密码为authentication_string
update user set host = '%' where user = 'root';
update user set authentication_string = '123456' where user = 'root';
刷新
flush privileges
重启数据库
systemctl restart mysql
测试下连接数据库
db.config.yaml
db:user: rootpassword: '******'host: 49.232.141.80port: 3306database: chat
db.ts
import {injectable} from "inversify"
import knex from "knex"
import fs from "node:fs";
import path from "node:path";
import jsyaml from 'js-yaml'const yaml = fs.readFileSync(path.resolve(__dirname, '../../db.config.yaml'), 'utf8')
const config = jsyaml.load(yaml)@injectable()
export class DB {database: anyconstructor() {this.database = nullthis.init()}public init() {this.database = knex({client: 'mysql',connection: config.db})}public createUserSchema() {// 创建用户表this.database.schema.createTableIfNotExists('user', table => {table.increments('id') // 自增IDtable.string('name')table.string('email')table.string('phone')table.integer('age')table.string('avatar')table.timestamps(true, true) // 创建时间、更新时间}).then(res => {console.log('创建用户表成功!')})}
}
测试连接: