无法通过命令行连接MySQL,2003错误

1.前提说明

因为我使用的是公司电脑,公司有自己的MySQL服务器,我想在公司的电脑上装一个测试数据库,用作sql测试,所以我只在电脑上装了MySQL的服务,通过navicat(连接数据库的工具)可以正常连接数据库,但是通过CMD连接数据库则报错
在这里插入图片描述

2.问题说明及解决办法

①通过mysql -uroot -p输入密码之后直接报错can‘t connect to MySQL server on ’localhost‘(10061)
②使用清除服务启动程序mysqld remove
③重新安装启动程序mysqld --install
④重启服务net start mysql
⑤初始化重装服务的证书mysqld --initialize -insecure
⑥重启服务就可以根据不输入密码直接连接MySQL服务器net start mysql
在这里插入图片描述

3.修改数据库的连接密码

连接好数据库之后,切换数据库的使用通过更新user表中的authentication_string字段就可以修改连接数据库的密码,这种情况也可以解决上述只可以通过不输密码直接连接,输密码就报错的问题

在这里插入图片描述
update mysql.user set authentication_string=password('root') where user='root';
修改完密码通过flush privileges更新所有权限,退出之后就可以通过用户名+密码在命令行中连接数据库

在这里插入图片描述

4.整表迁移数据

整表迁移数据库,如果所有字段全部一致,并且需求就是将记录的所有字段全部迁移,那就非常简单直接
insert into 目标表 select * from 迁移表;
但是如果迁移表的时候只插入记录的某几个字段,并且主键不能重复,这个就有点难受了,可以通过下述方法,生成随机数用作主键来插入,最好是通过存储过程自定义一个存储函数来生成随机不重复的主键,这个不重复值得是生成的随机数不重复且生成的随机数目标表中不存,目前还没做到存储过程这一步,期待后续的进步,如果有会的大神,欢迎留言
insert into link_select (id, source_id, select_config_id,type) select UNIX_TIMESTAMP()*floor(rand()*10)+floor(rand()*10000)*floor(rand()*100000)+(UNIX_TIMESTAMP()+floor(rand()*100))*floor(rand()*10000),id,industry_id,6 fromserverwhere del_flag=0 and industry_id is not NULL ; -- server表中的数据迁移

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值