centos7 安装mysql和mysqlclient遇到的坑总结

1. 安装mysql

1.1 下载并安装

CentOS 7默认的软件仓库中没有MySQL,需要从MySQL官网下载安装文件并手动安装。安装前需要先检查系统是否已安装了MariaDB,如已安装需要先卸载它。安装过程中可能会出现“缺少依赖库”的错误,需要先安装所需的依赖库。

sudo yum remove mariadb-libs

sudo yum install -y wget

wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm

sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm

sudo yum install -y mysql-server

1.2 初始化mysql

安装完毕之后,需要进行初始化操作,否则无法正常启动mysql服务。在初始化之前,需要修改mysql配置文件,将字符集修改为utf8,否则可能会出现中文乱码的问题。

vim /etc/my.cnf

在[mysqld]下面添加:

character-set-server=utf8

collation-server=utf8_general_ci

修改完毕之后,进行初始化操作:

sudo systemctl start mysqld

sudo mysqld --initialize

初始化之后,系统会自动生成一个随机密码,可以在/var/log/mysqld.log中查看。需要使用这个密码进行登录后,才能进行后续的操作。第一次登录需要修改密码。

sudo systemctl stop mysqld

sudo systemctl start mysqld

sudo mysql -u root -p

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';

1.3设置远程访问权限

默认情况下,mysql只允许本地访问,需要手动开启远程访问权限。

打开mysql配置文件:

vim /etc/my.cnf

在[mysqld]下面添加两行:

bind-address = 0.0.0.0

skip-name-resolve

重启mysql服务:

sudo systemctl restart mysqld

进入mysql命令行,创建远程访问的用户:

GRANT ALL PRIVILEGES ON *.* TO 'remote'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;

其中,remote表示远程访问的用户名,%表示允许任何ip访问,password为密码。

设置完成后,需要重启mysql生效。

2. 安装mysqlclient

2.1 安装依赖

在CentOS 7上安装mysqlclient需要先安装一些依赖库。

sudo yum install -y epel-release

sudo yum install -y python-devel mysql-devel

安装完依赖库后,使用pip安装mysqlclient模块:

pip install mysqlclient

安装过程中可能会出现找不到mysql_config的错误,需要指定mysql_config的路径:

sudo yum install -y mysql-devel gcc

sudo pip install --no-cache-dir mysqlclient --mysql-config=/usr/bin/mysql_config

2.2 遇到的坑

在安装mysqlclient时,可能会出现以下错误:

ImportError: libmysqlclient.so.18:无法打开共享对象文件:没有那个文件或目录

这是因为系统中缺少libmysqlclient.so.18这个库文件。可以使用以下命令找到这个文件的位置:

sudo find / -name libmysqlclient.so.18

然后找到这个文件的位置,将它的路径添加到/etc/ld.so.conf文件中:

sudo vim /etc/ld.so.conf

在文件最后添加:

/usr/lib64/mysql

保存并执行以下命令:

sudo ldconfig

然后再重新安装mysqlclient即可。

2.3 小结

在安装mysqlclient时,如果遇到缺少依赖库或者缺少libmysqlclient.so.18等错误,可以通过安装依赖库或者手动添加库文件路径来解决。需要注意的是,不同的系统可能会有不同的解决方法,需要根据具体情况进行调整。

操作系统标签