一、通过Navicat远程连接Mysql数据库
- 打开navicat,点击连接,选择MySQL。
- 输入主机和用户名和密码
二、通过cmd命令行远程连接Mysql数据库
shell> mysql -h host -u user -p
Enter password: ********
host
和 user
表示为运行 MySQL 服务器的主机名和 MySQL 账户的用户名。 为你的设置替换适当的值。********
代表你的密码; 当 mysql 显示 Enter password:
提示时输入它.
##远程连接MySQL常见报错问题
1、1130 - Host XXX is not allowed to connect to this MySQL server
该问题是由于服务器上的MySQL帐号不允许从远程登陆,只能在localhost连接。
解决方法:
1.登录服务器中的MySQL
mysql -u root -p
2.查看原先数据库的权限信息
use mysql;
select host,user from user;
发现 host中只有localhost具有root权限,而localhost默认的ip是192.168.1.1,所以我们需要修改ip。%是个通配符,若host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果host=%,表示所有IP都有连接权限。
注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产环境的IP进行设置;
3.依次执行如下命令
use mysql;
# select host from user where user='root'; //本命令为查看单独的root,若执行了上面的select host,user from user;,这个可以省略
update user set host = '%' where user ='root';
修改成功后,会是这样的。
host设置了“%”后便可以允许远程访问。
4.执行flush privileges使配置立即生效
flush privileges;
2、设置(或修改)root用户密码
在修改前,我们先看看怎么查询用户密码
#查询用户密码命令:
mysql> select host,user,authentication_string from mysql.user;
host: 允许用户登录的ip‘位置’%表示可以远程;
user:当前数据库的用户名;
authentication_string: 用户密码(后面有提到此字段);
1.mysql 5.7版本以前的修改方法
方法1: 用SET PASSWORD命令
格式:mysql> set password for 用户名@localhost = password(‘新密码’);
mysql> set password for root@localhost = password('123');
方法2:用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
mysqladmin -uroot -p123456 password 123
方法3:用UPDATE直接编辑user表
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;
方法4:在忘记root密码的时候,可以这样
以windows为例:
- 关闭正在运行的MySQL服务。
- 打开DOS窗口,转到mysql\bin目录。
- 输入
mysqld --skip-grant-tables
回车。--skip-grant-tables
的意思是启动MySQL服务的时候跳过权限表认证。- 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
- 输入mysql回车,如果成功,将出现MySQL提示符 >。
- 连接权限数据库:
use mysql;
。- 改密码:
update user set password=password("123") where user="root";
(别忘了最后加分号) 。- 刷新权限(必须步骤):
flush privileges;
。- 退出
quit;
。- 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。
2.mysql 5.7以上的修改方法
mysql 在5.7.9以后废弃了password字段和password()函数;password字段已从mysql.user表中删除,改用authentication_string:字段表示用户密码。
//选择数据库:
use mysql;
//更新root的密码:
update user set authentication_string=password('新密码') where user='root' and Host='localhost';
//刷新权限:
flush privileges;
3.mysql 8.0以上的修改方法
(1)如果当前root用户authentication_string字段下有内容,先将其设置为空,若没有可以直接进行二步骤。
use mysql;
update user set authentication_string='' where user='root'
(2)使用ALTER修改root用户密码,方法为ALTER user 'root'@'localhost' IDENTIFIED BY '新密码'
。如下:
ALTER user 'root'@'localhost' IDENTIFIED BY 'MySQL123#'
此处有两点需要注意:
1、不需要flush privileges来刷新权限。
2、密码要包含大写字母,小写字母,数字,特殊符号。
修改成功; 重新使用用户名密码登录即可;
注意: 一定不要采取如下形式该密码:
use mysql;
update user set authentication_string="newpassword" where user="root";
这样会给user表中root用户的authentication_string字段下设置了newpassword值;
当再使用ALTER USER ‘root’@’localhost’ IDENTIFITED BY ‘newpassword’时会报错的;
因为authentication_string字段下只能是mysql加密后的41位字符串密码;其他的会报格式错误;