mysqlclient安装问题

如果你是在CentOS上,用普通用户、通过下载mysql.tar.gz(而非yum)安装的mysql,并在后续安装mysqlclient时遇到一些问题,那么这篇笔记可能对你有用。

背景

我在CentOS7上,用普通用户1(记为user1)安装了mysql,安装方式是下载官方8.0版本的mysql.tar.gz包、解压后执行mysqld(安装过程的其他细节与本文要解决的报错无关)。

而后在使用普通用户2(记为user2)进行python建站、pip安装mysqlclient时,先后出现了一些报错。搜索了一些解决方案,大多数人是因yum(或apt)安装mysql时少装了一些组件导致的报错,与我的情况不同。因此做了这篇记录,以供有相同情况的开发者参考。

我之所以没有用root用户yum安装mysql是出于安全考虑。

如果你就是用yum或apt安装的mysql,并且只装了mysql_server,那么你遇到下面的报错时,应该看这篇(apt安装),或者这篇(yum安装)。

报错

报错1.mysql_config not found

报错2._mysql.c:1894:3: error: unknown type name ‘my_bool’

原因&解决方案

报错1.mysql_config not found

对于报错1,很多人是只安装了mysql_server、缺失组件导致的。但我用完整mysql.tar.gz包安装,并不缺少组件(可以在安装目录找到mysql_config命令文件)。对于我的情况,发生这一报错的原因有两个,1)因为我安装mysqlclient与安装mysql是用的不同用户(如前文所说,分别记为user2和user1),mysql相关命令在user1家目录下,因此user2没有权限使用mysql_config命令;2)我安装mysqlclient的用户user2的环境中没有配置mysql命令的路径

首先解决原因1),很简单,让user2有user1家目录的读+写+执行的权限即可。具体做法是,把user1家目录下的文件权限改为同组用户可读写:

chmod 774 /home/user1 -R

然后把user2加入user1的组:

usermod -G user1 user2

这样user2就有执行use1家目录里的mysql_config命令的权限了。

然后解决原因2),更简单,把mysql相关命令加入user2环境就行了。

打开user2环境配置文件:

vi /home/user2/.bash_profile

文件末尾添加mysql相关命令的路径:

MP=#等号后的内容替换为mysql安装包的路径

export PATH=$PATH:$MP/bin

保存后,记得让你的配置生效:

source /home/user2/.bash_profile

至此,报错1.mysql_config not found就不会再出现了

报错2._mysql.c:1894:3: error: unknown type name ‘my_bool’

这个报错的含义是gcc执行_mysql.c时,找不到my_bool的定义。(名词解释:1.gcc是c语言编译器;2._mysql.c是mysqlclient安装包的一个文件;3.my_bool这个变量原本应该被mysql包中的文件定义。)

在mysql8.0的官方Reference中提到:

The my_bool type was used before MySQL 8.0. As of MySQL 8.0, use the bool or int C type instead.

于是可知,以往的mysql包中确实有my_bool的定义,但在mysql8.0以后,这个my_bool就不存在了。

进而可知,在安装mysqlclient时,出现my_bool的问题,原因很可能是mysqlclient版本太旧,不支持mysql8.0+。我安装失败的版本是mysqlclient1.3.12。

解决办法自然是安装最新的mysqlclient(截止我写这个记录时,最新为1.4.6),目前所有mysqlclient的版本在这里查看。

正常情况下,第2个报错到这里就解决了。

如果最新版mysqlclient也安装失败,有可能是gcc没找到mysql安装包里的c语言头文件(*.h)、库文件(*.so)。你可以考虑手动把它们添加到gcc和g++搜索路径中。对于mysql8.0,可以参考下面的命令。

打开系统环境配置或者user2的环境配置:

vi /etc/profile

#或者用vi home/user2/.bash_profile

前者对所有用户生效,后者只对安装mysqlclient的用户user2生效。

文件末尾添加下列内容:

MP=# 等号后的内容替换为 mysql安装包的路径

#gcc找到头文件的路径

C_INCLUDE_PATH=$C_INCLUDE_PATH:$MP/include:$MP/include/mysql

export C_INCLUDE_PATH

#g++找到头文件的路径

CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:$MP/include:$MP/include/mysql

export CPLUS_INCLUDE_PATH

#找到动态链接库的路径

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MP/lib:$MP/lib/pkgconfig:$MP/lib/plugin:$MP/lib/plugin/debug:$MP/lib/private:

$MP/lib/mecab:$MP/lib/mecab/etc:$MP/lib/mecab/dic:$MP/lib/mecab/dic/ipadic_euc-jp:$MP/lib/mecab/dic/ipadic_utf-8:

$MP/lib/mecab/dic/ipadic_sjis

export LD_LIBRARY_PATH

#找到静态库的路径

LIBRARY_PATH=$LIBRARY_PATH:$MP/lib:$MP/lib/pkgconfig:$MP/lib/plugin:$MP/lib/plugin/debug:$MP/lib/private:

$MP/lib/mecab:$MP/lib/mecab/etc:$MP/lib/mecab/dic:$MP/lib/mecab/dic/ipadic_euc-jp:$MP/lib/mecab/dic/ipadic_utf-8:

$MP/lib/mecab/dic/ipadic_sjis

export LIBRARY_PATH

保存完记得source一下这个的配置文件。

最后重复一下。如果你是在CentOS上,用普通用户、通过下载mysql.tar.gz(而非yum)安装的mysql,并在后续安装mysqlclient时遇到一些问题,那么这篇笔记可能对你有用。如果情况不同,请优先考虑其他解决方案。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,919评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,567评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,316评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,294评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,318评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,245评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,120评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,964评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,376评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,592评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,764评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,460评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,070评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,697评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,846评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,819评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,665评论 2 354

推荐阅读更多精彩内容