拜托帮忙密码这个报错信息如何解决?
报错信息
修改/etc/my.cnf配置文件
增加[mysqldump] 配置信息
脚本里面不需要指定用户名密码,
没权限啊兄dei
root账户是最高权限啊
@少年Dev: 本机默认不用指定 host,去掉试下
@flyfishing:
去掉了还是报错
MySQL 权限, 你试试 “mysql -h localhost -uroot -p<你的密码> -e 'show databases;' ”
百度 “MySQL grant ... ”
我直接DOS命令可以,但是在脚本里面就不行
@少年Dev: DOS一般不是代指 Windows 系统吗, 你这怎么看都是 Linux 呀
@韆: 写懵了,是Linux,直接命令行可以运行,写进脚本就不行,说权限问题
这个应该算是有权限的吧?
@少年Dev:
mysql -h localhost -uroot -p123456 -e 'show databases;'
这句在 Linux 命令行执行过没, 返回的啥;
你说直接输入命令可以, 也没说输的啥命令
图片里报错就是 MySQL 权限问题
@韆:
@韆: 这个命令
可以正常备份
@少年Dev: 我去启VM试试, 应该是shell脚本里写法问题, -u -p 后的空格
@少年Dev:
mysqldump -ucloudkitty -pcloudkitty --host=localhost cloudkitty > /root/test_self/test_sql/cloudkitty3.sql
我 shell 执行是可行的
@韆: 你的mysql是什么方式安装
@韆: 我看看你的my.cnf文件,你方便截个图吗?
@少年Dev:
我装的是 mariadb
安装方式如下(我主要是玩 openstack 弄的)
https://docs.openstack.org/install-guide/environment-sql-database-rdo.html
@少年Dev:
基本是原生的, 没改过啥特殊配置
[root@controller etc]# find /etc -name my.cnf
/etc/my.cnf
[root@controller etc]# cat /etc/my.cnf
#
# This group is read both both by the client and the server
# use it for options that affect everything
#
[client-server]
#
# This group is read by the server
#
[mysqld]
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
[root@controller etc]# cat /etc/my.cnf.d/openstack.cnf
[mysqld]
#bind-address=192.168.75.128
bind-address=0.0.0.0
default-storage-engine=innodb
innodb_file_per_table=on
max_connections=4096
collation-server=utf8_general_ci
character-set-server=utf8
max_allowed_packet=500M
[root@controller etc]#
@韆: 我想可能是我的mysql装的有点问题吧,
@少年Dev: 不清楚, 我刚才看里前面也有去掉空格的执行记录; 搞不懂你为啥报错
建议你对shell脚本做减法, MySQL 命令换点简单的试试, 再试 mysqldump
@韆: 对啊,脚本是没问题的
我一行一行执行也是到mysql命令那里报错
@韆: netstat -lnp | grep -i MySQL
看看你的端口绑定情况
@少年Dev:
[root@controller ~]# netstat -lnp | grep -i MySQL
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 1436/mysqld
unix 2 [ ACC ] STREAM LISTENING 31082 1436/mysqld /var/lib/mysql/mysql.sock
[root@controller ~]#
@韆: 我的是tcp6,奇怪的很
。。。
不过问题已经解决了,修改了mysql的配置文件
centos版本问题,shell脚本不能指定用户名跟密码,可能开发人员认为那样不安全。
修改root用户的密码之后,再试试
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'xxxxx';
@人间春风意: root密码之前已经修改过了呢
执行该sql 看看 : select host, user from mysql.user;结果粘贴出来;
试试将 localhost 替换成 127.0.0.1
@少年Dev: 没有 host =localhost的root 用户 ,所以报错 , 试试将 localhost 替换成 127.0.0.1或者内网ip
@地菜: host要指定吗,本机执行不是不需要指定么?
@少年Dev: 不需要指定 建立在你有localhost的root ,但是你没有 ,可以添加一个 或者把localhost.localdomain 改成localhost
@地菜:
@地菜:
修改哪个就报哪个错误。。。。
@少年Dev: 你还是改一个localhost用户吧 , 估计3306端口只绑定到localhost了
执行 netstat -lnp | grep MySQL 看结果
@地菜:
@少年Dev:
cat /etc/mysql/my.cnf |grep bind
cat /etc/mysql/mysql.conf.d/mysqld.cnf |grep bind
@少年Dev: 3306 咋绑定到 ipv6 上了
can't connect to mysql server on 127.0.0.1 (111) 搜索这个 找找
@地菜:
@地菜: 应该是mysql安装有问题,我重新安装一下试试吧
@少年Dev: 数据备份下, 重装吧
@韆:
重装还是报一样的错,汗。。。
@少年Dev: -P -> -p 小写的p 指定密码
@地菜: 解决了,
命令没问题,执行方式有问题
@少年Dev: 啥方式
@地菜: shell脚本不能执行user跟密码,可能开发人员认为那样不安全。必须在配置文件里面声明。
@地菜感觉应该是centos版本问题吧,centos6好像又可以