《MySQL系列-部署维护》MySQL启动异常:error while loading shared libraries: libncurses.so.5: cannot open shared...

这篇具有很好参考价值的文章主要介绍了《MySQL系列-部署维护》MySQL启动异常:error while loading shared libraries: libncurses.so.5: cannot open shared...。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQL问题处理汇总

一、MySQL启动异常:error while loading shared libraries: libncurses.so.5: cannot open shared…

MySQL启动时出现如下日常:
提示加载不到libncurses.so.5

[root@kafka01 bin]# ./mysql -uroot -p
./mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory

方法一:yum安装libncurses.so.5(失败)
但是使用yum安装后,下载的libncurses.so.5在/usr/lib目录下,再次启动MySQL的时候还是会提示加载不到

[root@kafka01 bin]#  yum install libncurses.so.5

[root@kafka01 bin]# find / -name 'libncurses*'
/usr/lib/libncursesw.so.5.9
/usr/lib/libncurses++.so.5
/usr/lib/libncurses++.so.5.9
/usr/lib/libncurses++w.so.5
/usr/lib/libncurses++w.so.5.9
/usr/lib/libncurses.so.5
/usr/lib/libncurses.so.5.9
/usr/lib/libncursesw.so.5
/usr/lib64/libncurses.so.6
/usr/lib64/libncurses.so.6.1
/usr/lib64/libncursesw.so.6
/usr/lib64/libncursesw.so.6.1

方法二:将/usr/lib64目录下的libncurses.so.6改为libncurses.so.5(成功)

[root@kafka01 bin]# cp /usr/lib64/libncurses.so.6 /usr/lib64/libncurses.so.5

拓展:如果遇到如下的报错信息,缺少libtinfo.so.5,也可以使用相同的方法处理

[root@kafka01 bin]# ./mysql -uroot -p
./mysql: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

[root@kafka01 bin]# find / -name 'libtinfo*'
/usr/lib/libtinfo.so.5
/usr/lib/libtinfo.so.5.9
/usr/lib64/libtinfo.so.6
/usr/lib64/libtinfo.so.6.1
[root@kafka01 bin]# cp /usr/lib64/libtinfo.so.6 /usr/lib64/libtinfo.so.5

二、This function has none of DETERMINISTIC, NO SQL…(you might want to use the

log_bin_trust_function_creators

在MySQL中,log_bin_trust_function_creators是一个系统变量,用于控制是否信任二进制日志中创建函数。当该变量的值为0时,MySQL将拒绝在二进制日志中执行创建函数的语句,以提高安全性。但是有时候在操作数据库的时候,可能会遇到log_bin_trust_function_creators错误,这意味着MySQL服务器拒绝了创建函数的请求。

1.创建函数

编写一个函数,实现通过传参查询第n高的工资。

-- 函数
CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
    set N = N - 1;
  RETURN (
    select ifnull((select distinct Salary from Employee order by Salary desc limit N,1),null)
    as getNthHighestSalary
  );
END
-- 执行
select getNthHighestSalary(2)

2.出现问题

《MySQL系列-部署维护》MySQL启动异常:error while loading shared libraries: libncurses.so.5: cannot open shared...,MySQL,mysql,数据库,服务器

3.分析问题

这是因为开启了bin-log日志,我们就必须确定函数中以下点:

  • deterministic 不确定的

  • no sql 没有SQL语句

  • reads sql data 只读数据

  • modifies sql data 修改数据

  • contains sql 包含SQL语句

因为在function中,只有deterministic ,no sql,reads sql data被支持。所以开启bin-log后必须为function指定参数

4.解决问题

4.1 查询参数

show variables like 'log_bin_trust_function_creators';

《MySQL系列-部署维护》MySQL启动异常:error while loading shared libraries: libncurses.so.5: cannot open shared...,MySQL,mysql,数据库,服务器

4.2 修改参数值

set global log_bin_trust_function_creators = 1;

《MySQL系列-部署维护》MySQL启动异常:error while loading shared libraries: libncurses.so.5: cannot open shared...,MySQL,mysql,数据库,服务器

4.3 检查修改结果

show variables like 'log_bin_trust_function_creators';

《MySQL系列-部署维护》MySQL启动异常:error while loading shared libraries: libncurses.so.5: cannot open shared...,MySQL,mysql,数据库,服务器

5.创建函数

5.1 创建函数

可以看到将参数 log_bin_trust_function_creators值改为1后,可以成功的创建函数

CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT
BEGIN
    set N = N - 1;
  RETURN (
    select ifnull((select distinct Salary from Employee order by Salary desc limit N,1),null)
    as getNthHighestSalary
  );
END

《MySQL系列-部署维护》MySQL启动异常:error while loading shared libraries: libncurses.so.5: cannot open shared...,MySQL,mysql,数据库,服务器

5.2 执行函数

select getNthHighestSalary(2)

《MySQL系列-部署维护》MySQL启动异常:error while loading shared libraries: libncurses.so.5: cannot open shared...,MySQL,mysql,数据库,服务器

补充:

采用以上方法在数据库重启后还会失效,可以使用以下方法长期有效

root@hadoop_zxy ~]# vim /etc/my.cnf

在最后添加

log_bin_trust_function_creators = 1

三、Select into outfile导出文件ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

1.问题排查

1.1 问题介绍

通过select … into outfile…导出数据的时候,提示如下问题:

ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

mysql> select * from zxy into outfile '/zxy/data/mysql/zxy/zxy.txt';
ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it cannot execute this statement

1.2 问题分析

得知是secure-file-priv参数的影响,通过查询参数的介绍,得知当secure_file_priv指定了导出的位置,也就是只能导出到该目录。但是该参数还有其他配置项:

  • secure_file_priv=null

    不允许导入导出

  • secure_file_priv=‘path’

    导入导出只能发生在指定的目录

  • secure_file_priv=‘’

    不对导入导出做限制

mysql> show variables like '%secure%';
+--------------------------+-----------------------+
| Variable_name            | Value                 |
+--------------------------+-----------------------+
| require_secure_transport | OFF                   |
| secure_auth              | ON                    |
| secure_file_priv         | /var/lib/mysql-files/ |
+--------------------------+-----------------------+
3 rows in set (0.00 sec)

2.问题解决

2.1 修改my.cnf

根据业务需要,因为对于数据库来说导入导出数据还是有可能影响数据库安全的。在接受不对导入导出做限制的情况下,可以在配置文件my.cnf中做修改。

# my.cnf文件,在mysqld下添加如下参数即可
[mysqld]
secure_file_priv=''

2.2 重启mysqld

systemctl restart mysqld

2.3 再次导出失败,权限不足

不过现在还是会导出失败,因为导出的目录是root用户root组,mysql没有权限处理:

我希望将表数据导出到/zxy/data/mysql/zxy目录下,但是提示权限不足

mysql> select * from zxy into outfile '/zxy/data/mysql/zxy/zxy.txt';
ERROR 1 (HY000): Can't create/write to file '/zxy/data/mysql/zxy/zxy.txt' (Errcode: 13 - Permission denied)

2.4 修改用户及用户组

[root@zxy mysql]# chown mysql:mysql /zxy/data/mysql/zxy

2.5 导出成功

mysql> select * from zxy into outfile '/zxy/data/mysql/zxy/zxy.txt';
Query OK, 3 rows affected (0.00 sec)

2.6 查看数据

[root@zxy zxy]# ls
zxy.txt
[root@zxy zxy]# cat zxy.txt
1       ZXY     2023-03-10
2       zxy     2023-03-11
3       ZXY     2023-03-12

四、Docker安装MySQL报错:mysqld failed while attempting to check config…mysqld: Can’t read dir of ‘/etc/mysql/conf.d/’…

[ERROR] [Entrypoint]: mysqld failed while attempting to check config command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.Frnt2oibYI mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)

1 最初的时候使用如下命令创建容器,但是创建之后通过docker ps查看不到启动的容器

[root@zxy_master mysql01]# docker run -p 33061:3306 --name mysql01 \
> -v /zxy/apps/docker_mysql/mysql01/conf:/etc/mysql \
> -v /zxy/apps/docker_mysql/mysql01/data:/var/lib/mysql \
> -v /zxy/apps/docker_mysql/mysql01/log:/var/log/mysql \
> -e MYSQL_ROOT_PASSWORD=123456 \
> -d mysql:5.7
358163e8d564ff111a41efe06e83798c9518a65300502c12a63776c6a3639a8c

2 通过查看该容器的日志,可以看到主要是因为读取不到/etc/mysql/conf.d/目录

[root@zxy_master apps]# docker logs -f 358163e8d564
2022-12-20 05:46:26+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.40-1.el7 started.
2022-12-20 05:46:26+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config
        command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.XeHsvFblmW
        mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)
mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

3 -v /zxy/apps/docker_mysql/mysql01/conf:/etc/mysql

修改为

-v /zxy/apps/docker_mysql/mysql01/conf:/etc/mysql/conf.d \

[root@zxy_master apps]# docker run -p 33061:3306 --name mysql01 \
> -v /zxy/apps/docker_mysql/mysql01/conf:/etc/mysql/conf.d \
> -v /zxy/apps/docker_mysql/mysql01/data:/var/lib/mysql \
> -v /zxy/apps/docker_mysql/mysql01/log:/var/log/mysql \
> -e MYSQL_ROOT_PASSWORD=123456 \
> -d mysql:5.7
faf2312fd62ad4ebe05ba2cffa9917b47417cfad1f8175912e1e0bc6e089986c

4 再次检查已经启动成功,报错原因主要是没有指定到conf.d目录,导致容器在启动的时候找不到该目录。文章来源地址https://www.toymoban.com/news/detail-588954.html

[root@zxy_master apps]# docker ps
CONTAINER ID   IMAGE                                                  COMMAND                  CREATED         STATUS         PORTS                                                    NAMES
faf2312fd62a   mysql:5.7                                              "docker-entrypoint.s…"   3 seconds ago   Up 2 seconds   33060/tcp, 0.0.0.0:33061->3306/tcp, :::33061->3306/tcp   mysql01

到了这里,关于《MySQL系列-部署维护》MySQL启动异常:error while loading shared libraries: libncurses.so.5: cannot open shared...的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux中error while loading shared libraries错误解决办法

    默认情况下,编译器只会使用 /lib 和 /usr/lib 这两个目录下的库文件,通常通过源码包进行安装时,如果不指定–prefix,会将库安装在 /usr/local/lib 目录下 当运行程序需要链接动态库时,提示找不到相关的.so库,会报错。也就是说, /usr/local/lib 目录不在系统默认的库搜索目录中

    2024年01月17日
    浏览(49)
  • 执行可执行程序时遇到error while loading shared libraries错误解决

    执行 ./provider -i test.conf 编译引用了第三方库zookeeper_mt.so的代码后,执行出现了以下错误 这就是 依赖的动态库找不到路径 导致的。 示例是我处理的过程如下,最后成功执行: 解决方法有3种: 如果 共享库文件安装到了/lib或/usr/lib目录 下, 执行一下 ldconfig 命令。 ldconfig命令

    2024年02月09日
    浏览(58)
  • error while loading shared libraries: libpython3.9.so.1.0

    意思是在 u s r / l i b usr/lib u sr / l ib 等等默认文件夹中找不到 l i b p y t h o n 3.9. s o . 1.0 libpython3.9.so.1.0 l ib p y t h o n 3.9. so .1.0 ,只要把搜索路径加上 l i b p y t h o n 3.9. s o . 1.0 libpython3.9.so.1.0 l ib p y t h o n 3.9. so .1.0 所在文件夹的位置即可。可以用 w h i c h    p y t h o n which;pyt

    2024年02月07日
    浏览(44)
  • Error while loading rule ‘@typescript-eslint/dot-notation‘

    Error while loading rule ‘@typescript-eslint/dot-notation’: You have used a rule which requires parserServices to be generated. You must therefore provide a value for the “parserOptions.project” property for @typescript-eslint/parser. 在eslint.js中加入代码

    2024年02月15日
    浏览(54)
  • ./mysqld: error while loading shared libraries: libaio.so.1: 报错处理

    报错提示 解决方案:

    2024年02月07日
    浏览(56)
  • 详解error while loading shared libraries: ../../lib/libopencv_core.so

    目录 详解 error while loading shared libraries: ../../lib/libopencv_core.so 问题分析 1. 动态库未正确安装 2. 动态库路径未正确配置 解决方案 1. 确认 OpenCV 动态库已正确安装 2. 配置动态库路径 方法 1:使用 LD_LIBRARY_PATH 方法 2:使用 /etc/ld.so.conf.d 3. 编译时指定动态库路径 4. 检查库文件权限

    2024年04月27日
    浏览(40)
  • nginx报错(error while loading shared libraries: libpcre2-8.so.0)

    报错信息如下: 使用用rpm部署nginx服务在Centos7.9中,启动nginx之前试用命令nginx -t进行检查 处理方式1: 如果你的服务器上有配置yum源的话,可以使用yum进行安装,只需执行命令:yum install pcre2 即可 处理方式2: 使用下载相关依赖http://mirror.centos.org/centos/7/os/x86_64/Packages/pcre2-10.23-2.

    2024年02月07日
    浏览(53)
  • ubuntu 22.04 安装 snappy,error while loading shared libraries: libsnappy.so.1

    error while loading shared libraries: libsnappy.so.1 GitHub - google/snappy: A fast compressor/decompressor 下载源代码: 修改CMakeLists.txt下面的行,如果cpu不是太老的话,特别是 AVX2的支持: 编译: 安装:

    2024年02月15日
    浏览(60)
  • MacOS 安装 Mamba 报错 “Error while loading conda entry point: conda-libmamba-solver” 的解决办法

    Conda (Anaconda、Miniconda) 是一个功能强大、工具全面的包管理和环境管理工具(姑且可以理解为应用超市),其对于计算机技能没这么娴熟的生信工作者来说,是安装软件的一个福音。但是,他有一个最致命的缺点,就是 「慢」 ! 生信工具很多都需要其他依赖,尤其是依赖

    2024年02月08日
    浏览(145)
  • Elasticsearch8.6启动异常:fatal exception while booting Elasticsearch

    fatal exception while booting Elasticsearch java.nio.file.InvalidPathException: Trailing char at index 48: C:Program FilesJavajdk1.8.0_181libtools.jar at sun.nio.fs.WindowsPathParser.normalize(WindowsPathParser.java:191) ~[?:?] at sun.nio.fs.WindowsPathParser.parse(WindowsPathParser.java:153) ~[?:?] at sun.nio.fs.WindowsPathParser.parse(WindowsPathParse

    2024年02月04日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包