操作系统是centos 7.9.2009。之前mysql/data在系统盘,现在空间不太够,需要迁移到自己的目录下。在操作过程中,发现mysql的配置似乎不是很完善,就有很多需要自己连接、修改的地方
先停止mysql服务
mysql.server stop
修改/etc/my.cnf
文件,主要是设置这几个路径
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/data/mysql.sock
log-error=/usr/local/mysql/data/gt-centos7-9-desktop-v2-6-60gb-25m.novalocal.err
pid-file=/usr/local/mysql/data/gt-centos7-9-desktop-v2-6-60gb-25m.novalocal.pid
注意除了datadir,其它都是文件,不是文件夹
datadir=/home/centos/model/mysql/data
socket=/home/centos/model/mysql/mysql.sock
log-error=/home/centos/model/mysql/mysqld.log
pid-file=/home/centos/model/mysql/mysqld.pid
设置为自己的路径。需要初始化一下,再启动mysql即可
mysqld --initialize --datadir /home/centos/model/mysql/data
mysql.server start
把/etc/my.cnf
文件中的mysql.sock
软连接到/tmp
下
ln -s /home/centos/model/mysql/mysql.sock /tmp
密码没错,但就是不知道为啥【捂脸】
由于服务器只有我一个人用,所以/etc/my.cnf
里直接设置为不需要密码登录,在文件头部添加一行
skip-grant-tables
然后直接mysql就能用centos用户登录
load data local infile '/home/centos/model/PSCN/output/min_dist/result/cargo_voyage_port_2018.csv' into table min_result
fields terminated by ','
lines terminated by '\n'
ignore 1 lines ( origin,destination,lon_o,lat_o,lon_d,lat_d,port_o,port_d);
似乎是最新的mysql不允许本地加载数据了。
/etc/my.cnf
添加local-infile = 1
重启一下
登录时使用mysql --local-infile=1
写了一个python脚本,欲将pandas.DataFrame导入sql中。参考博客
import pandas as pd
from sqlalchemy import create_engine
data = pd.read_csv('cargo_voyage_port_2018.csv')
engine = create_engine("mysql+pymysql://centos:Y1W2@localhost:3306/pscn?charset=utf8")
data.to_sql("min_result", engine, schema="pscn", if_exists='replace', index=True,
chunksize=None, dtype=None)
但是报错Can't connect to MySQL server on localhost
netstat -tulpen
发现3306端口没有被监听。看了一些博客,原因各不相同。
对于我的情况,就是云服务器的3306端口没有被打开,打开之后重启一下mysql服务就好了
原因是openssl版本过低,全程按照这篇博客操作
原因是缺少了libffi.so.7
,全程按照这篇博客操作