文章目录
数据库迁移
创建用户名
用户名记录在 mysql.user 数据库中,看了一下表结构是不一样的,那么就没法导出导入了,用户要重新创建。
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
导出数据库
mysqldump -h server-ip -u root -p RUNOOB > RUNOOB.sql
创建数据库
导入之前需要先创建数据库,导出的 SQL 文件中不包含创建数据库的语句。
mysqladmin -u root -p create RUNOOB
导入数据库
mysql -u root -p RUNOOB < RUNOOB.sql
大小写问题
原先 5.0.67 部署在 Windows 上,Windows 不区分大小写,现在迁移到 5.7.25 是 Linux 系统,Linux 系统区分大小写。
重命名表名
mysql> ALTER TABLE `db`.`old` RENAME TO `db`.`OLD`;
日志文件
如果 MySQL 没有启动成功,那么检查 MySQL 的日志文件,日志文件位于:/var/log/mysql/error.log
查看日志文件:
cat /var/log/mysql/error.log
问题1:MySQL Error Number 2013
外部访问时报 2013 错误:
MySQL Error Number 2013
Lost connection to MySQL server during query
修改配置文件 /etc/mysql/mysql.conf.d/mysqld.cnf
注释掉 bind-address = 127.0.0.1
,因为默认3306端口只允许本地访问的。
问题2:MySQL迁移数据目录后无法启动
[ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
[ERROR] InnoDB: The innodb_system data file 'ibdata1' must be writable
[ERROR] InnoDB: Plugin initialization aborted with error Generic error
[ERROR] Plugin 'InnoDB' init function returned error.
[ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
[ERROR] Failed to initialize builtin plugins.
[ERROR] Aborting
修改 /etc/apparmor.d/usr.sbin.mysqld
,参考 《MySQL迁移数据目录后无法启动》。
问题3:向已创建的表导入数据变乱码
默认的数据库编码是 latin1 !按默认编码创建的数据表,导入数据时全都变成了乱码,将其修改成 utf8。
# /etc/mysql/mysql.conf.d/mysqld.cnf
# 修改处1:添加以下2行
[client]
default-character-set=utf8
[mysqld]
# 修改处2:添加以下3行
default-storage-engine=INNODB
character-set-server=utf8
collation-server=utf8_general_ci
问题4: Error 1055
-
可以在运行时修改,参考《mysql之修改sql_mode》
成功了!
使用 mysqldump 导出 SQL 的办法,可以跨版本、跨平台导入导出,跨得好!
常用操作
查看数据库
mysql> show databases;
查看连接状态
mysql> show processlist;
MySQL 代理
MySQL 只有一个连接,不像 FTP 那样控制连接和数据连接分开,所以 MySQL 的代理很简单,用 socat 命令就可以实现。
CentOS 安装 socat
在 CentOS 安装 socat 的时候经常会出现无法找到 yum 的安装包的情况,是缺少 epel 的扩展源,首先安装扩展源,然后再安装 socat 。
yum -y install epel-release
yum -y install socat
Ubuntu 安装 socat
Ubuntu 默认库里就包含了 socat ,直接安装就好。
sudo apt install socat
socat 作代理
socat -d -lf proxy.log TCP4-LISTEN:3306,reuseaddr,fork,su=nobody TCP4:db.example.com:3306