1、使用navicate连接报错,首先检查mysql端口是否开启 发现已经开启 2、再检查服务器的端口是否开启 在cmd窗口或者powershell命令窗口下 执行
telnet 192.168.181.100 3306此时连接不算,不一定是没开端口,先打开下图telnet 功能, 如果还是不能连接则表示服务器没开3306端口 3、此时进入服务器修改端口配置文件,添加3306的端口开启
vi /etc/sysconfig/iptables如果没有iptables文件则安装iptables服务
yum install iptables-services或者命令开启3306端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent然后重启防火墙
firewall-cmd --reload查询端口
firewall-cmd --zone=public --query-port=3306/tcp删除端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent此时去外部telnet连接3306端口是可以连上的,但是navicate还是连不上mysql 4、现在想起来之前安装的时候忘了授权给root用户在其他地方登陆 授权root用户在其他机器登录
use mysql; select user,host from user; #查询创建的用户 update user set host='%' where user ='root'; #允许远程机器连接 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION; #授权 flush privileges; #刷新权限老版本navicate不支持mysql8.0默认加密方式,假如不想更新navicate,就需要更改密码加密方式
alter user 'root'@'%' identified with mysql_native_password by '你的密码'; # 更改密码的加密方式并更改密码 flush privileges; #刷新权限5、创建新用户
CREATE USER 'username1'@'%' IDENTIFIED BY '123456'; #创建新用户 GRANT ALL PRIVILEGES ON *.* TO 'username1'@'%' WITH GRANT OPTION;#给新用户授权 flush privileges; #刷新权限6、更改密码
alter user 'username1'@'%' identified by '123456';7、假如忘记密码了可以在my.cnf[mysqld]下添加以下代码
skip-grant-tables这时再重启mysql用 mysql -uroot -p登录时,可直接跳过密码输入,就能进入mysql了, 此时先将密码置为空 ‘’,
update mysql.user set authentication_string='' where user = 'root'; 。退出删除skip-grant-tables后重启,用空密码登录的话,就可以执行以上(6)步骤了 为什么跳过密码登录后不直接修改密码而是要先将密码修改为’'空再进来修改呢,假如直接修改的话,我这边第6步会直接报语法错误,因为skip-grant-tables不允许直接修改密码,另外通过更新user表的authentication_string字段也不能直接修改密码,因为mysql8.0已经没有oassword(函数了);