Ubuntu 21.01中 打开mariadb远程连接时报错[ERROR 1356 (HY000): references invalid or definer/invoker of view l

Ubuntu 21.01中 打开mariadb远程连接时报错ERROR 1356 (HY000): references invalid or definer/invoker of view lack rights


1. 原因

由于使用的是Ubuntu 21.04,直接使用命令

sudo apt install mariadb-server

安装的数据库

安装完后


在这里插入图片描述


使用mysql数据库查看user表关键字段会有如下情况,和我在centos中碰到的问题不一样
use mysql;
select host,user,password from user;

在这里插入图片描述


这里使用了语句直接对表进行更新

update user set host="%" where host="localhost";

然后就是如下1356报错

MariaDB [mysql]> update user set host="%" where host="localhost";
ERROR 1356 (HY000): View 'mysql.user' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them


在这里插入图片描述

即视图引用了无效的表或者行数据或者函数,或者视图的定义者/调用者没有使用它们的权限

2.解决方法

2.2这里赋予用户远程连接数据库并对服务器上所有数据库或者表操作的权限,不能直接使用更新语句。

2.2.1使用mysql数据库

use mysql;

因为这里的操作本质上就是对mysql数据库里面的user表里进行操作


2.2.2 user表关键用处字段及用处

字段名用处
Host允许访问的主机ip
User数据库用户名
Password数据库用户密码
  • user

    用户名root,

  • HOST

    %任意主机,

  • password

    代表为该root用户设置的远程登录密码。

2.2.3 设置用户,赋予其所有权限,并设置访问密码添加用户赋予远程链接权限


use mysql;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '密码' WITH GRANT OPTION;
FLUSH PRIVILEGES;

root用户名也可自己自定义

密码自己设置即可

2.2.4 命令作用

2.2.5赋予服务器的全部操作权限,服务器上所有数据库及其表的操作权限,给用户root,能从任意地址使用连接密码111111连接数据库,且用户能将自己全部权限赋予其他用户

2.2.6 语法

 grant 权限1,权限2,…权限n ON 数据库名称.表名称 to '用户名'@'用户地址' identified by ‘此用户链接密码’WITH GRANT OPTION;

2.2.7 对照表

用处字段名作用
权限all privileges/all赋予服务器的全部14个权限给用户
数据库名称.表名*.**.*表示赋予用户服务器上所有数据库及其表的操作权限
用户名root用户登录数据库名
对应User表属性Host,用户地址’%'’%'能从任意地址使用连接localhost,ip、机器名、域名皆可
对应User表属性Password’此用户链接密码’‘链接密码值,可以任意设置’user表中这个字段值是非空,不然会操作失败
赋予权限WITH GRANT OPTION能将自己全部权限赋予其他用户
权限有select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14个
all privileges/all

2.3 赋予服务器的全部操作权限

*.*
2.3.1 本质是(数据库名称.表名称),*.*表示赋予用户服务器上所有数据库及其表的操作权限
’%'
用户地址 可以是localhost,localhost,ip、机器名、域名皆可’%'表示能从任意地址使用连接 对应User表属性Host,用户地址
'root'
用户名对应User表属性User属性,用户登录名
'密码'
‘链接密码’密码属性值是非空的,不然会操作失败对应User表属性Password,用户密码
WITH GRANT OPTION

2.3.2 该用户可以将自己拥有的权限授权给别人

 select host,user,password from user;

在这里插入图片描述


  • 上面代码更改权限成功。

2.4 先查看端口是否打开

 netstat -nltp

在这里插入图片描述


2.5再修改mariadb的配置文件

2.6 编辑/etc/mysql/mariadb.conf.d/目录下的50-server.cnf配置文件

将bind-address =127.0.0.1注释或者修改成bind-address =0.0.0.0
vi /etc/mysql/mariadb.conf.d/50-server.cnf
bind-address =0.0.0.0

在这里插入图片描述


修改成 0.0.0.0

在这里插入图片描述



再次查看端口打开情况
 netstat -nltp

在这里插入图片描述


检查防火墙设置
sudo iptables -L -n

在这里插入图片描述


若是没有打开3306端口,打开
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT

在这里插入图片描述


最后重启MariaDB服务即可
systemctl status mariadb#查看状态
systemctl  restart  mariadb#重启mariadb
本机cmd测试远程连接成功

在这里插入图片描述


navicat链接成功

在这里插入图片描述


  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值