mysql mariadb for debian12

mariadb 在debian12的版本是10.11.4, 有一些变化, 比如某些字段变成了关键词,  比如 over, value, 需要用反引号围起来。 `over`,`value`

比如 insert into table1  (over) value ('完成');

在老版本mariadb10.1中不会有错, 但是新版本10.11会出错

需要改成 insert into table1  (`over`) value ('完成')

如果项目中使用了over和value作为字段或者表名, 就比较麻烦,需要搜索源代码, 检查修改。

一个比较快速的方法是,在新的系统下, 恢复数据库到很久以前, 然后把binlog 逐个转成sql, 然后用mysql -u root -f 执行它们, -f参数, 出错会继续执行,然后把错误信息收集起来,根据错误信息, 用sed对sql做修改, 并且修改源代码,再跑一遍binlog , 直到没有错误, 至此, 源代码应该都改好了, 这是对数据库更新过程的修改, 如果是select语句里出现问题, 没啥好办法, 修改源代码, 把query的语句 都收集到日志里, 然后收集一段时间, 归类一下, 在新版本的数据库跑一下,根据错误,修改源代码, 这样就能解决绝大部分的问题, 再有问题的, 就看错误日志,逐个解决了。

还有就是 mysql.user这个表变成了view, 不能直接insert和update , 建立一个远程的root权限需要如下操作:

CREATE USER 'root'@'192.168.%';
GRANT ALL PRIVILEGES ON  *.* to 'root'@'192.168.%' WITH GRANT OPTION;

 

修改密码:

SET PASSWORD FOR 'root'@'192.168.%' = PASSWORD('******');