我正在尝试遵循本教程。
它没有给出Mysql版本要求。因此,我尝试使用 Mysql 8.0.18 Community Server 来使用这些命令进行连接。
我已经在 Mysql 8 中创建了所需的内容:
mysql> CREATE SCHEMA sbtest;
mysql> CREATE USER sbtest@'%' IDENTIFIED BY 'MyPassword+1';
mysql> GRANT ALL PRIVILEGES ON sbtest.* to sbtest@'%';
比使用第一个命令创建的脚本文件:
[root@host ~]# cat sbpreparing
docker run \
--rm=true \
--name=sb-prepare \
severalnines/sysbench \
sysbench \
--db-driver=mysql \
--oltp-table-size=100000 \
--oltp-tables-count=24 \
--threads=1 \
--mysql-host=192.168.1.200 \
--mysql-port=3306 \
--mysql-user=sbtest \
--mysql-password=MyPassword+1 \
/usr/share/sysbench/tests/include/oltp_legacy/parallel_prepare.lua \
run
并启动它:
[root@host ~]# ./sbpreparing
sysbench 1.0.17 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Initializing worker threads...
Threads started!
thread prepare0
Creating table 'sbtest1'...
FATAL: unable to connect to MySQL server on host '192.168.1.200', port 3306, aborting...
FATAL: error 2059: Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib/x86_64-linux-gnu/mariadb18/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
FATAL: `thread_run' function failed: /usr/share/sysbench/tests/include/oltp_legacy/common.lua:66: Failed to connect to the database
Error in my_thread_global_end(): 1 threads didn't exit
我可以使用命令从同一台机器连接到 MySQL 服务器:
mysql -h 192.168.1.200 -u sbtest -pMyPassword+1
但 sysbench 做不到。我该如何解决?谢谢!
在 mustaccio 的帮助下,我按照这个答案中的说明解决了这个问题:
在 中的下一个字符串之前删除了一个注释符号
/etc/my.cnf
:default_authentication_plugin=mysql_native_password
以root身份连接:
mysql -u root -pMyPassword+1
执行下一个查询:
ALTER USER 'sbtest'@'%' IDENTIFIED WITH mysql_native_password BY 'MyPassword+1';
按照这些说明 Sysbench 成功连接到 Mysql 8 并成功执行所有准备任务。