zoukankan      html  css  js  c++  java
  • mysql8.0创建用户授予权限报错解决方法

    mysql8.0创建用户授予权限报错解决方法

    问题一:8.0版本用之前的创建用户和赋权一条语句的方式会报错

    会报错的写法:之前版本是没问题的,但是8.0mysql会报语法错误

    -- 创建用户、设置密码并且赋权
    grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
    -- 格式:grant 权限 on 数据库教程名.表名 to 用户@登录主机 identified by "用户密码";
    		 -- @ 后面是访问mysql的客户端ip地址(或是 主机名) % 代表任意的客户端,如果填写 localhost 为
    		 -- 本地访问(那此用户就不能远程访问该mysql数据库了)
    

    mysql8.0中必须分开,先创建用户、再给用户赋值

    -- 创建用户 (如果执行这条语句报错了:请参考问题二)
    CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
    -- 给用户分配权限
    grant all privileges on *.* to 'myuser'@'%' ;
    -- 单独授予某种权限的写法;具体再详细的操作请参考其他文章
    GRANT SELECT ON oilsystem.input TO 'myuser'@'%';
    -- 刷新权限,使操作生效
    FLUSH PRIVILEGES; 
    
    

    问题二:Mysql远程连接报错:authentication plugin caching_sha2

    ​ Mysql远程连接报错:authentication plugin caching_sha2

    ​ 原因:mysql 8.0 默认使用 caching_sha2_password 身份验证机制 之前版本的mysql使用的是: mysql_native_password

    ​ 注:从之前版本升级 8.0 版本的不会改变现有用户的身份验证方法,仍然采用mysql_native_password的验证方式;但新用户会默认使用新的 caching_sha2_password 。

    ​ MySQL8默认的认证插件是caching_sha2_password,很多客户端都不支持。故而连接报错;

    ​ 解决方案:

    ​ 方案一:

    -- 修改加密规则 
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; 
    -- 更新一下用户的密码 
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';   
    -- 刷新权限 
    FLUSH PRIVILEGES;  
    

    ​ 方案二:修改my.cnf配置文件

    ​ 将默认的认证插件修改为mysql_native_password

    ​ 在my.cnf配置文件中增加配置:

    default_authentication_plugin=mysql_native_password
    
  • 相关阅读:
    HDU 1261 字串数(排列组合)
    Codeforces 488C Fight the Monster
    HDU 1237 简单计算器
    POJ 2240 Arbitrage
    POJ 3660 Cow Contest
    POJ 1052 MPI Maelstrom
    POJ 3259 Wormholes
    POJ 3268 Silver Cow Party
    Codesforces 485D Maximum Value
    POJ 2253 Frogger(最短路)
  • 原文地址:https://www.cnblogs.com/linuxtop/p/12300595.html
Copyright © 2011-2022 走看看