我遇到的问题是Navicat可以登录MySQL但自己本地命令行就会报如上标题的问题。
mysql 8.0版本的问题
正确步骤。
方法一
1.下载MySQL8.0后解压,根目录没有data文件夹和my.ini文件,我们也不要创建。
(若已经安装了MySQL的将服务停止,删除安装目录下的data和my.ini,当然我建议你找个地方吧my.ini暂存一下,还有你需要的数据库备份文件
然后删除服务
mysqld --remove
关于找不到my.ini的问题(经检验,my.ini文件还是要在这加入才有效,不然下面这些步骤完成之后再做就打不开服务了)
你可能会在这里找到
c盘,programData文件夹里面的MySQL目录下
当然还有可能在
图二来自MySQL 8.0版本安装后,安装目录下找不到my.ini文件
如果你哪里都找不到可以来下载,当然也可以自己写,但下载的这个会比较全,自己修改起来也好找
my.ini下载
如果这个下载连接无效的话通知我一下哦,还有积分如果被动被改高了,也给我说一下我改成0积分。
一些关键修改(主要看你的需求,做些设置)
[client]
default-character-set = utf8
port=3306
[mysql]
default-character-set = utf8
[mysqld]
character-set-server = utf8
port=3306(自己用什么接口填什么接口,默认是3306)
basedir=根目录(自行填自己的安装位置)
datadir=根目录(自行填自己的安装位置)data
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"
2.将“根目录/bin”路径添加到环境变量中。
3.用管理员启动命令行,win10是右键左下角win图标,选择“Windows powershell(管理员)”。
4.输入
mysqld --initialize-insecure --user=mysql
这一步可能等待时间很长
5.然后输入
mysqld --install mysql
6.输入
net start mysql
7.输入
mysql -u root
初始化后不需要输入密码
8.初始化密码
alter user 'root'@'localhost' identified by '123456'
退出
exit
再次登录
mysql -u root -p
输入密码123456就可以登录了
9.建立远程访问
#使用初始库
>use mysql;
#查看用户表
>select host, user, plugin from user;
#发现没有host是%的用户root,于是创建一个
>create user 'root'@'%' identified by '123456';
#给权限,第二句不能用就退出再登一次
>GRANT ALL privileges on *.* to 'root'@'%' with grant option;
>flush prilileges;
这时再拿Navicat登录就可以登录了,注意自己的端口号不要写错了
方法二
1、在原有数据库情况下,把data文件夹删除,保留my.ini文件,把需要的内容填上,不需要的内容注释掉
2、将“根目录/bin”路径添加到环境变量中
3、用管理员启动Windows powershell
4、执行下列语句
mysqld --remove
mysqld --initialize --console (该语句会生成一个初始密码,例如这样的root@localhost: 4aO40dXvxg+S,把后面的内容保存,之后要填密码)
mysqld --install
net start mysql
mysql -u root -p(该语句接下来填的密码就是上面保存的那个)
alter user 'root'@'localhost' identified by '123456'(修改初始密码)
按照上面方法一的创建新用户等步骤就可以了