我们正在尝试使用mysqltuner来了解我们的Wordpress网站上某些问题背后的问题,但在运行它时遇到的问题很少(大多数都无法执行/返回代码:256)。
首先我们做了:
wget https://raw.githubusercontent.com/major/MySQLTuner-perl/master/mysqltuner.pl
并执行:
perl mysqltuner.pl
但这就是我们得到的:
>> MySQLTuner 1.6.9 - Major Hayden <major@mhtx.net>
>> Bug reports, feature requests, and downloads at http://mysqltuner.com/
>> Run with '--help' for additional options and output filtering
[--] Skipped version check for MySQLTuner script
[!!] failed to execute: SELECT VERSION()
[!!] FAIL Execute SQL / return code: 256
[!!] failed to execute: SHOW /*!50000 GLOBAL */ VARIABLES
[!!] FAIL Execute SQL / return code: 256
[!!] failed to execute: SHOW /*!50000 GLOBAL */ STATUS
[!!] FAIL Execute SQL / return code: 256
[!!] failed to execute: SHOW ENGINES
[!!] FAIL Execute SQL / return code: 256
[!!] failed to execute: SHOW SLAVE STATUS\G
[!!] FAIL Execute SQL / return code: 256
[!!] failed to execute: SHOW SLAVE HOSTS
[!!] FAIL Execute SQL / return code: 256
[!!] failed to execute: \s
[!!] FAIL Execute SQL / return code: 256
Use of uninitialized value $myvar{"version"} in pattern match (m//) at
mysqltuner.pl line 1526 (#1)
(W uninitialized) An undefined value was used as if it were already
defined. It was interpreted as a "" or a 0, but maybe it was a mistake.
To suppress this warning assign a defined value to your variables.
To help you figure out what was undefined, perl will try to tell you the
name of the variable (if any) that was undefined. In some cases it cannot
do this, so it also tells you what operation you used the undefined value
in. Note, however, that perl optimizes your program and the operation
displayed in the warning may not necessarily appear literally in your
program. For example, "that $foo" is usually optimized into "that "
. $foo, and the warning will refer to the concatenation (.) operator,
even though there is no . in your program.
Use of uninitialized value $mysqlvermajor in numeric gt (>) at mysqltuner.pl
line 1552 (#1)
Use of uninitialized value $mysqlvermajor in numeric eq (==) at mysqltuner.pl
line 1552 (#1)
Use of uninitialized value $myvar{"version"} in concatenation (.) or string at
mysqltuner.pl line 1531 (#1)
[!!] Your MySQL version is EOL software! Upgrade soon!
[OK] Operating on 64-bit architecture
-------- Storage Engine Statistics -------------------------------------------
[!!] failed to execute: SHOW DATABASES
[!!] FAIL Execute SQL / return code: 256
[--] Status: -Archive -BDB -Federated -InnoDB -ISAM -NDBCluster
[OK] Total fragmented tables: 0
[!!] failed to execute: SELECT ~0
[!!] FAIL Execute SQL / return code: 256
-------- Security Recommendations -------------------------------------------
Use of uninitialized value $myvar{"version"} in pattern match (m//) at
mysqltuner.pl line 1345 (#1)
[!!] failed to execute: SELECT CONCAT(user, '@', host) FROM mysql.user WHERE TRIM(USER) = '' OR USER IS NULL
[!!] FAIL Execute SQL / return code: 256
[OK] There are no anonymous accounts for any database users
[!!] failed to execute: SELECT CONCAT(user, '@', host) FROM mysql.user WHERE (password = '' OR password IS NULL) AND plugin NOT IN ('unix_socket', 'win_socket')
[!!] FAIL Execute SQL / return code: 256
[OK] All database users have passwords assigned
[!!] failed to execute: SELECT CONCAT(user, '@', host) FROM mysql.user WHERE CAST(password as Binary) = PASSWORD(user) OR CAST(password as Binary) = PASSWORD(UPPER(user)) OR CAST(password as Binary) = PASSWORD(UPPER(LEFT(User, 1)) + SUBSTRING(User, 2, LENGTH(User)))
[!!] FAIL Execute SQL / return code: 256
[!!] failed to execute: SELECT CONCAT(user, '@', host) FROM mysql.user WHERE HOST='%'
[!!] FAIL Execute SQL / return code: 256
[!!] There is no basic password file list!
-------- CVE Security Recommendations ---------------------------------------
[--] Skipped due to --cvefile option undefined
Use of uninitialized value $mystat{"Questions"} in numeric lt (<) at
mysqltuner.pl line 1868 (#1)
[!!] Your server has not answered any queries - cannot continue...
我们不明白可能是什么问题。提前谢谢大家!
答案 0 :(得分:0)
由于更改listen
端口/重命名root
用户&amp;禁用无密码local
登录但使用以下命令修复:
/path/to/mysqltuner.pl --port xxxx --user xxxx --pass xxxx
(假设没有localhost
切换&amp;端口--host
而3306
没有--port
切换,则假设为mysqltuner
运行/root/.my.cnf
的更好方法是使用 limited_user 的某些凭据设置[client]
user=limited_user
pass=thatuserspassword
(任何名称都可以使用):< / p>
/path/to/mysqltuner.pl --port 5555 --user limited_user
然后我可以使用 limited_user 运行:
SHOW DATABASES, LOCK TABLES, SELECT ON *.*
limited_user 只需要以下权限:
SHOW SLAVE STATUS
&安培;可选SHOW SLAVE HOSTS
&amp; https://www.example.com/html/my_application.php