November 23 2017

No paths allowed for shared library

No paths allowed for shared library
MySQL No paths allowed for shared library的错误会发生在当你对服务器上的文件进行提权的时候。比如加载插件 或者应用服务器文件

版本的区别
MYSQL < 4.1
在MYSQL 4.1以前的版本中,可以将所有的.ddl/.so文件里面的任何函数都注册到MYSQL里面以供MYSQL调用。
无论这个DLL在什么位置,函数的声明是什么样的。

在MYSQL 4.1及以后的版本中,对UDF函数进行了限制,只有实现了一个特定接口的函数才可以被成功注册到MYSQL中,这样就防止了通过MYSQL非法调用系统的DLL。

5.0 < MYSQL < 5.1
在MYSQL5.0以后,对注册的DLL的位置有了限制,创建函数的时候,所对应的.ddl/.so不能包含/或者,简单的理解就是不能是绝对路径。
可能的报错 : 1124 – No paths allowed for shared library

MYSQL > 5.1

创建函数时所用的DLL只能放在mysql安装目录下的lib/plugin目录
而且这个plugin目录默认是不存在的。。可能就是为了防止通过into dumpfile将DLL来写到这个文件夹。。

select @@basedir; –获取mysql安装目录;
SHOW VARIABLES LIKE ‘%plugin%’; –显示mysql的安装路径

 

[root@tpl-centos7-64bit ~]# find / -name group_replication.so
/u01/mysql/lib/plugin/debug/group_replication.so
/u01/mysql/lib/plugin/group_replication.so
[root@tpl-centos7-64bit ~]# su – mysql
Server version: 8.0.3-rc-log MySQL Community Server (GPL)

看一个例子:

dbadmin@(none) 11:01:41>INSTALL PLUGIN group_replication SONAME ‘/u01/mysql/lib/plugin/group_replication.so’;
ERROR 1124 (HY000): No paths allowed for shared library

 

dbadmin@(none) 11:02:05>select @@basedir;
+————–+
| @@basedir |
+————–+
| /u01/my3306/ |
+————–+
1 row in set (0.00 sec)

dbadmin@(none) 11:03:17>SHOW VARIABLES LIKE ‘%plugin%’;
+——————————-+——————————+
| Variable_name | Value |
+——————————-+——————————+
| default_authentication_plugin | mysql_native_password |
| plugin_dir | /usr/local/mysql/lib/plugin/ |
+——————————-+——————————+
2 rows in set (0.00 sec)

然后我们修改my.cnf文件

dbadmin@(none) 11:08:37>SHOW VARIABLES LIKE ‘%plugin%’;
+——————————-+————————+
| Variable_name | Value |
+——————————-+————————+
| default_authentication_plugin | mysql_native_password |
| plugin_dir | /u01/mysql/lib/plugin/ |
+——————————-+————————+
2 rows in set (0.00 sec)

dbadmin@(none) 11:08:49>INSTALL PLUGIN group_replication SONAME ‘group_replication.so’;
Query OK, 0 rows affected (0.03 sec)



Copyright 2019. All rights reserved.

Posted 2017年11月23日 by ucjmh in category "mysql

Leave a Reply

Your email address will not be published. Required fields are marked *