You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux环境下Python连接MariaDB报libmariadb.so.3缺失错误求助

Linux环境Python连接MariaDB提示libmariadb.so.3找不到的问题解决

问题现象

运行Python连接MariaDB的代码时触发如下报错:

(venv) [admin@server connector_testing]$ python mariadb_connector.py
Traceback (most recent call last):
  File "mariadb_connector.py", line 15, in <module>
    engine = create_engine(CONNECTION_STRING)
  File "<string>", line 2, in create_engine
  File "/home/admin/Downloads/venv/lib/python3.7/site-packages/sqlalchemy/util/deprecations.py", line 309, in warned
    return fn(*args, **kwargs)
  File "/home/admin/Downloads/venv/lib/python3.7/site-packages/sqlalchemy/engine/create.py", line 560, in create_engine
    dbapi = dialect_cls.dbapi(**dbapi_args)
  File "/home/admin/Downloads/venv/lib/python3.7/site-packages/sqlalchemy/dialects/mysql/mariadbconnector.py", line 106, in dbapi
    return __import__("mariadb")
  File "/home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb/__init__.py", line 10, in <module>
    from ._mariadb import (
ImportError: libmariadb.so.3: cannot open shared object file: No such file or directory

已执行操作

  • 安装依赖命令:
pip install sqlalchemy
pip install mariadb

注意:Linux系统下执行pip install mariadb时,pip脚本还会检索mariadb_config文件,该文件需要从MariaDB官网下载安装Connector/C获取。已完成Connector/C的安装,且成功在Python虚拟环境中安装了PYPI源的mariadb库。

  • 已确认Connector/C的lib/mariadb目录下存在libmariadb.so.3文件,对应目录结构如下:
mariadb connector-c had these 3 directories:
(venv) [admin@server mariadb-connector-c-3.1.9-centos7-amd64]$ ls -rlt
drwx------. 4 admin admin 38 Jun 19  2020 lib
drwx------. 3 admin admin 21 Jun 19  2020 include
drwx------. 2 admin admin 28 Jun 19  2020 bin

(venv) [admin@server lib]$ ls -lrt
drwx------. 2 admin admin 27 Jun 19  2020 pkgconfig
drwx------. 3 admin admin 90 Jun 19  2020 mariadb

(venv) [admin@server mariadb]$ ls -lrt
-rwx------. 1 admin admin 1525776 Jun 19  2020 libmariadb.so.3
-rw-------. 1 admin admin 2677912 Jun 19  2020 libmariadbclient.a
drwx------. 2 admin admin     186 Jun 19  2020 plugin
lrwxrwxrwx. 1 admin admin      15 Jun 19  2020 libmariadb.so -> libmariadb.so.3
  • 已尝试将libmariadb.so.3及相关文件复制到Python虚拟环境的mariadb库目录/home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb下,复制后目录结构如下:
(venv) [admin@server mariadb]$ pwd
/home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb

(venv) [admin@server connector_testing]$ cd /home/admin/Downloads/venv/lib/python3.7/site-packages/mariadb
(venv) [admin@server mariadb]$ ls -lrt
-rwx--x--x. 1 admin admin  465280 Nov 30 14:46 _mariadb.cpython-37m-x86_64-linux-gnu.so
-rw-------. 1 admin admin     928 Nov 30 14:46 __init__.py
drwx------. 2 admin admin      37 Nov 30 14:46 __pycache__
drwx------. 3 admin admin     119 Nov 30 14:46 constants
-rwx------. 1 admin admin 1525776 Dec  3 10:08 libmariadb.so.3
-rw-------. 1 admin admin 2677912 Dec  3 10:08 libmariadbclient.a
lrwxrwxrwx. 1 admin admin      15 Dec  3 10:08 libmariadb.so -> libmariadb.so.3
drwx------. 2 admin admin     186 Dec  3 10:08 plugin

完成上述操作后仍然触发相同错误。

解决方案

该问题核心原因是Linux动态链接库加载器默认不会检索Python第三方库目录,也没有把Connector/C的lib目录加入检索路径,可根据需求选择以下任意一种方案解决:

方案1:临时生效(仅对当前终端会话有效)

执行如下命令,将Connector/C的lib目录加入临时检索路径,替换下方路径为你自己的Connector/C实际存放路径:

export LD_LIBRARY_PATH=/path/to/mariadb-connector-c-3.1.9-centos7-amd64/lib/mariadb:$LD_LIBRARY_PATH

执行后直接运行Python代码即可正常加载。

方案2:对当前用户永久生效

编辑当前用户的bash配置文件:

vi ~/.bashrc

在文件末尾添加如下内容(替换为实际路径):

export LD_LIBRARY_PATH=/path/to/mariadb-connector-c-3.1.9-centos7-amd64/lib/mariadb:$LD_LIBRARY_PATH

保存退出后执行生效命令:

source ~/.bashrc

方案3:对全系统所有用户永久生效(需要root权限)

  1. 新增动态库配置文件:
sudo vi /etc/ld.so.conf.d/mariadb-connector-c.conf
  1. 在文件中写入Connector/C的lib目录完整路径,示例:
/home/admin/Downloads/mariadb-connector-c-3.1.9-centos7-amd64/lib/mariadb
  1. 保存退出后执行动态库缓存更新命令:
sudo ldconfig

内容的提问来源于stack exchange,提问作者nikhil int

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:15:00