1.用户root用户登陆mysql数据库
# mysql -h127.0.0.1 -uroot -pmysql@123 -P 3306
切换到mysql数据库
>user mysql
查询用户的权限信息
>SELECT host,user,password_expired,Grant_priv,Super_priv FROM user;
如果我们用Navicat通过IP的方式访问,是访问不到mysql数据库的。
可以看到,用户对应的主机是localhost,而不是%,所以不能连接。
处理方法:
2、授权root用户可以远程登陆
>GRANTALLON*.*TO'root'@'%';
'%' - 所有情况都能访问
‘localhost’ - 本机才能访问
’111.222.33.44‘ - 指定 ip 才能访问
3.创建用户
>create user 'test'@'%' identified by 'xxxxxx'
4.创建数据库
>create database if not exists bufftify default character set = 'utf8';
5.为用户test创建操作bufftify数据库的权限
grant all privileges on bufftify .* to 'test'@'%';
当执行该操作的时候,会报Error Code: 1044. Access denied for user 'root'@'%' to database错误
查询下mysql下user表的各用户的权限信息
Grant_priv和Super_priv两个为N,没有开启权限执行
执行下面的操作 :
>UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
重新启动数据
>mysqld restart
重启成功后,在执行权限的操作,就可以了。
参考地址:https://blog.csdn.net/eagle89/article/details/77894773
6.在创建数据库的其他执行权限,存储过程,函数
grant execute on bufftify .* to 'test'@'%';
grant create routine on bufftify .* to 'test'@'%';
grant alter routine on bufftify .* to 'test'@'%';
7.-- 命令刷新一下权限
>flush privileges;
8.在上面的准备工作做完后,启动项目,还是报错,
mysql 报错This function has none of DETERMINISTIC,主要是项目启动的时候去创建存储过程,
解决方法:
SQL code
mysql> show variables like'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF|
+---------------------------------+-------+
mysql> setgloballog_bin_trust_function_creators=1;
mysql> show variables like'log_bin_trust_function_creators';
+---------------------------------+-------+
| Variable_name | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | ON|
参考地址:https://www.jb51.net/article/97037.htm
9.配置重启后,启动项目又报了mysql中Invalid default value for 'stime'错误问题,参考网上的方法排查,这种报错多是你mysql升级到5.7而引起的默认值不兼容的问题。看看你的字段名是什么,我的是时间字段,类型是datetime。想到可能是类型的默认值被限制了,查看 sql_mode。果然:NO_ZERO_IN_DATE,NO_ZERO_DATE这两个参数限制时间不能为0
mysql>show variableslike'sql_mode';+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+|Variable_name|Value|+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+|sql_mode|ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION|+---------------+-------------------------------------------------------------------------------------------------------------------------------------------+1rowinset(0.00 sec)
临时修改:
mysql>session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
Query OK, 0rows affected,1warning (0.00 sec)
mysql>
永久修改:
可以直接修改my.cnf文件
例如: vim /etc/my.cnf
在[mysqld]下面添加如下列:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
记得修改my.cnf文件后,需要重启启动mysql
再次启动项目,就可以了
参考地址:https://www.cnblogs.com/wpjamer/p/7057577.html