相关 *** 作如下:
在mysql8上做同样的 *** 作,就报错了。报错信息如下:
正确的写法:
这样就不会报错了,就能正常进行了。
如果有小伙伴测试了,方便的话,请回复。我更新下。感谢~!
希望能帮助到,有需要的小伙伴。这问题,我在网上查了,目前没有答案,CSDN有遇到相同的问题的文章,楼主并没有解决,我在下面回复了解决方案。
错误如下:1045 Access denied for user 'root'@'localhost' (using password:YES)
想起来有可是在navicat添加的root@'%'用户,可能密码和现在新版本5.7的加密不同了,导致密码不对.
所以解决方法是更新用户密码.
注意5.7版本密码保存的列是 authentication_string ,密码要用函数password加密.
更新密码的SQL是 update user set authentication_string=password('密码') where user="root"
下面是Windows平台下 *** 作步骤:
配置文件my.ini ,在mysqld下面添加skip-grant-tables,意思是可以直接回车登录,保存退出。重启mySQL,然后运行cmd
输入mysql -u root -p就可以不用密码登录了,出现password:的时候直接回车可以进入。
1.切换到mysql数据库:use mysql
2.给root用户设置新密码,
mysql>update user set authentication_string=password('密码') where user="root"
3.刷新数据库mysql>flush privileges
4.再修改my.ini,把刚加入的"skip-grant-tables"这行删除或者添加#注释,保存退出再重启mysql服务就可以了。
一些参考命令
#删除之前配置 drop user 'root' @ '%'
#配置远程登录 CREATE USER 'root' @ '%' IDENTIFIED BY password( '你的密码')
#授权 GRANT ALL ON *.* TO 'root' @ '%'
#更新权限 flush privileges
#查看用户,主机,加密方法 select user,host,plugin from user
问题:最近开始用mysql8,结果发现在sql语法比之前的版本严格了许多。。此处先解决授权sql报错问题,报错如下
mysql>grant all on dev1_test1.* to dev1@'%' identified by '12345678'
ERROR 1064 (42000): You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near 'identified by '12345678'' at line 1
解决:mysql8 要求先建用户,后授权
然后打开mysql默认的3306端口
然后允许使用旧的密码验证方式:
最后 sqlyog就可以远程登陆了。
如果先安装了一个版本的,再安装新版本,需要先把旧版本的数据删除,否则启动不起来,重点是删除 /var/lib/mysql下的所有文件
select @@validate_password_policy
set global validate_password_policy=0
update mysql.user set authentication_string=password('new password') where user='root'
允许root 远程登录:
grant all privileges on . to 'root'@'%' identified by 'password' with grant option
select host,user from user where user='root'
flush privileges
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)