官网有说明,运行PASA时配置Mysql比较麻烦,但是运行速度会比SQLite快,funannotate中默认使用SQLite。
官网有配置mysql的说明:https://github.com/PASApipeline/PASApipeline/wiki/setting-up-pasa-mysql
mysql -uroot create user 'pasa_write'@'localhost' identified by 'pasa_write_pwd'; grant all privileges on `%_pasa`.* to 'pasa_write'@'localhost'; create user 'pasa_access'@'localhost' identified by 'pasa_access';运行到Running PASA alignment step报错如下:
Running CMD: /home/cx/anaconda3/envs/funannotate/opt/pasa-2.5.2/scripts/create_mysql_cdnaassembly_db.dbi -c /media/sf_F_DRIVE/Af293/funannotate/Af293/update_misc/pasa/alignAssembly.txt -S '/home/cx/anaconda3/envs/funannotate/opt/pasa-2.5.2/schema/cdna_alignment_mysqlschema' -r
DBI connect('database=;host=localhost','pasa_write',...) failed:Can't connect to local MySQL server through socket '/tmp/mysql.sock'(2) at /home/cx/anaconda3/envs/funannotate/opt/pasa-2.5.2/PerlLib/DB_connect.pm line 72.
是mysql.sock的路径不对,之前老版本默认是在'/tmp/mysql.sock',但是新的不在这,通过以下代码查找新的路径
sudo find / -type s -name '*.sock' 2>/dev/null | grep mysql [sudo] cx 的密码: /run/mysqld/mysqld.sock /run/mysqld/mysqlx.sock为了能运行建立了软链接
ln -sf /run/mysqld/mysqld.sock /tmp/mysql.sock运行之后仍然有报错
Running CMD: /home/cx/anaconda3/envs/funannotate/opt/pasa-2.5.2/scripts/create_mysql_cdnaassembly_db.dbi -c /media/sf_F_DRIVE/Af293/funannotate/Af293/update_misc/pasa/alignAssembly.txt -S '/home/cx/anaconda3/envs/funannotate/opt/pasa-2.5.2/schema/cdna_alignment_mysqlschema' -r
DBI connect('database=;host=localhost','pasa_write',...) failed: Authentication plugin 'caching_sha2_password' cannot be loaded: /home/cx/anaconda3/envs/funannotate/lib/plugin/caching_sha2_password.so: 无法打开共享对象文件: 没有那个文件或目录 at /home/cx/anaconda3/envs/funannotate/opt/pasa-2.5.2/PerlLib/DB_connect.pm line 72.
或者将配置文件中的位置改了
/home/cx/anaconda3/envs/funannotate/opt/pasa-2.5.2/pasa_conf/conf.txt中的
# Pass socket connections through Perl DBI syntax e.g.
#MYSQLSERVER=mysql_socket=/tmp/mysql.sock原来的MYSQLSERVER=mysql_socket=/run/mysqld/mysqld.sock
保存后运行,会出现上述同样的错误“无法打开共享对象文件”,这是因为MySQL 8.0的认证插件问题。Perl的DBD::mysql模块找不到caching_sha2_password.so文件。
解决办法:
修改用户认证方式为mysql_native_password
sudo mysql -u root -p要加sudo,否则会报错ERROR 1698 (28000): Access denied for user 'root'@'localhost',进不去mysql。
在MySQL中执行:
-- 查看当前用户的认证插件 SELECT user, host, plugin FROM mysql.user WHERE user = 'pasa_write'; +------------+-----------+-----------------------+ | user | host | plugin | +------------+-----------+-----------------------+ | pasa_write | localhost | caching_sha2_password | +------------+-----------+-----------------------+ -- 将认证方式改为mysql_native_password ALTER USER 'pasa_write'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pasa_password'; -- 或者重新创建用户(如果ALTER不行) DROP USER IF EXISTS 'pasa_write'@'localhost'; CREATE USER 'pasa_write'@'localhost' IDENTIFIED WITH mysql_native_password BY 'pasa_password'; GRANT ALL PRIVILEGES ON pasa_db.* TO 'pasa_write'@'localhost'; FLUSH PRIVILEGES; #pasa_password要与前面配置文件conf.txt中的一致 -- 验证修改 SELECT user, host, plugin FROM mysql.user WHERE user = 'pasa_write'; -- 退出 EXIT;