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