目标:
我试图在我的工作服务器机器上运行mysql。但是由于管理员没有在通常的默认安装路径中安装它,所以失败了。我怎样才能让它起作用?
事实:
MySQL安装在:/opt/mysql/10.1.16/下面。
$> ls -1 /opt/mysql/10.1.16/
bin
COPYING
COPYING.LESSER
COPYING.thirdparty
CREDITS
data
EXCEPTIONS-CLIENT
include
INSTALL-BINARY
lib
man
mysql-test
README
README-wsrep
scripts
share
sql-bench
support-files但是,当我想从脚本运行mysql时,我会这样做:
export LIBMYSQL_PLUGIN_DIR="/opt/mysql/10.1.16/lib/plugin"
export LD_LIBRARY_PATH="/opt/mysql/10.1.16/lib"
export LD_RUN_PATH="/opt/mysql/10.1.16/lib"
export PATH="/opt/mysql/10.1.16/bin:/home/xxxxxxxx/bin:/usr/local/bin:/usr/bin:/bin:/usr/lib64/jvm/jre/bin:/usr/lib/mit/bin:/usr/lib/mit/sbin"
/opt/mysql/10.1.16/bin/mysql -C --no-beep --line-numbers --protocol=TCP --host="${DB_HOSTNAME}" --port="${DB_PORT}" --user="${DB_USER}" --database "${DB_SCHEMA}" -o --delimiter ','使用所有的DB_xxxx代码设置,我得到以下错误:
ERROR 2059 (HY000): Authentication plugin 'dialog' cannot be loaded: /usr/local/mysql/lib/plugin/dialog.so: cannot open shared object file: No such file or directory
我查看了正式的文档页面:https://dev.mysql.com/doc/refman/8.0/en/environment-variables.html,唯一提到插件的地方就是检查是否LIBMYSQL_PLUGIN_DIR,这似乎很好,因为:
$> echo "${LIBMYSQL_PLUGIN_DIR}"
/opt/mysql/10.1.16/lib/plugin
$> ls -la /opt/mysql/10.1.16/lib/plugin
-rwxr-xr-x 1 mysql dba 17382 Sep 13 2016 adt_null.so
-rwxr-xr-x 1 mysql dba 12462 Sep 13 2016 auth_0x0100.so
-rwxr-xr-x 1 mysql dba 33039 Sep 13 2016 auth_gssapi_client.so
-rwxr-xr-x 1 mysql dba 80774 Sep 13 2016 auth_gssapi.so
-rwxr-xr-x 1 mysql dba 18007 Sep 13 2016 auth_pam.so
-rwxr-xr-x 1 mysql dba 13028 Sep 13 2016 auth_socket.so
-rwxr-xr-x 1 mysql dba 23521 Sep 13 2016 auth_test_plugin.so
-rw-r--r-- 1 mysql dba 227 Sep 13 2016 daemon_example.ini
-rwxr-xr-x 1 mysql dba 15267 Sep 13 2016 debug_key_management.so
-rwxr-xr-x 1 mysql dba 14975 Sep 13 2016 dialog_examples.so
-rwxr-xr-x 1 mysql dba 39102 Sep 13 2016 dialog.so
-rwxr-xr-x 1 mysql dba 35337 Sep 13 2016 example_key_management.so
-rwxr-xr-x 1 mysql dba 67516 Sep 13 2016 file_key_management.so
-rwxr-xr-x 1 mysql dba 534847 Sep 13 2016 ha_archive.so
-rwxr-xr-x 1 mysql dba 326244 Sep 13 2016 ha_blackhole.so
-rwxr-xr-x 1 mysql dba 6315641 Sep 13 2016 ha_connect.so
-rwxr-xr-x 1 mysql dba 270829 Sep 13 2016 ha_example.so
-rwxr-xr-x 1 mysql dba 408688 Sep 13 2016 ha_federated.so
-rwxr-xr-x 1 mysql dba 658050 Sep 13 2016 ha_federatedx.so
-rwxr-xr-x 1 mysql dba 17067973 Sep 13 2016 ha_innodb.so
-rwxr-xr-x 1 mysql dba 13007344 Sep 13 2016 ha_mroonga.so
-rwxr-xr-x 1 mysql dba 1586135 Sep 13 2016 handlersocket.so
-rwxr-xr-x 1 mysql dba 1687004 Sep 13 2016 ha_oqgraph.so
-rwxr-xr-x 1 mysql dba 745005 Sep 13 2016 ha_sphinx.so
-rwxr-xr-x 1 mysql dba 5150095 Sep 13 2016 ha_spider.so
-rwxr-xr-x 1 mysql dba 226800 Sep 13 2016 ha_test_sql_discovery.so
-rwxr-xr-x 1 mysql dba 35898 Sep 13 2016 libdaemon_example.so
-rwxr-xr-x 1 mysql dba 131020 Sep 13 2016 locales.so
-rwxr-xr-x 1 mysql dba 221483 Sep 13 2016 metadata_lock_info.so
-rwxr-xr-x 1 mysql dba 18211 Sep 13 2016 mypluglib.so
-rwxr-xr-x 1 mysql dba 16382 Sep 13 2016 mysql_clear_password.so
-rwxr-xr-x 1 mysql dba 18751 Sep 13 2016 qa_auth_client.so
-rwxr-xr-x 1 mysql dba 24478 Sep 13 2016 qa_auth_interface.so
-rwxr-xr-x 1 mysql dba 13542 Sep 13 2016 qa_auth_server.so
-rwxr-xr-x 1 mysql dba 229059 Sep 13 2016 query_cache_info.so
-rwxr-xr-x 1 mysql dba 286720 Sep 13 2016 query_response_time.so
-rwxr-xr-x 1 mysql dba 534415 Sep 13 2016 semisync_master.so
-rwxr-xr-x 1 mysql dba 445144 Sep 13 2016 semisync_slave.so
-rwxr-xr-x 1 mysql dba 175928 Sep 13 2016 server_audit.so
-rwxr-xr-x 1 mysql dba 32295 Sep 13 2016 simple_password_check.so
-rwxr-xr-x 1 mysql dba 19846 Sep 13 2016 sql_errlog.so
-rwxr-xr-x 1 mysql dba 218688 Sep 13 2016 wsrep_info.so所有库都有执行权限,它们都在这里,但是MYSQL仍然试图在默认路径/usr/local/mysql/lib/plugin/中搜索。当然,在我们的机器上,这条路是不存在的。
问题:
是否有另一种具体要求mysql为特定目录加载插件的选项/方法?
备注:
我找到了一些关于错误ERROR 2059 (HY000): Authentication plugin 'dialog' cannot be loaded: /usr/local/mysql/lib/plugin/dialog.so: cannot open shared object file: No such file or directory的链接,但是解决方案都是:
can't)
--enable-cleartext-plugin选项(它什么也不做,我认为它在我的例子中没有关联)发布于 2021-10-06 08:42:59
所以我想我明白原因了。
设置LIBMYSQL_PLUGIN_DIR:
export LIBMYSQL_PLUGIN_DIR="/opt/mysql/10.1.16/lib/plugin"
在某种程度上没有被阅读或考虑。
但是,直接将选项--plugin-dir="${LIBMYSQL_PLUGIN_DIR}"添加到二进制文件中将使其工作。
所以正确的答案是:
/opt/mysql/10.1.16/bin/mysql --plugin-dir="${LIBMYSQL_PLUGIN_DIR}" -C --no-beep --line-numbers --protocol=TCP --host="${DB_HOSTNAME}" --port="${DB_PORT}" --user="${DB_USER}" --database "${DB_SCHEMA}" -o --delimiter ','为什么不读env变量,这是一个谜。
https://stackoverflow.com/questions/69447803
复制相似问题