以前学习mysql的时候,都是部署在本机,这样不存在客户端主机与服务器主机连接的问题,都是直接用localhost登录就行。
今天因项目需要,我们把mysql部署在服务器上,然后客户端装了client,这样就遇到客户端连接数据库服务器的问题。折腾了蛮久,发现即使是默认的root账户也没能连上服务器。把今天的解决过程记录如下:
1、在服务器上安装好mysql server 后,在公司内网开通3306端口(mysql的默认端口);同时,服务器也要支持外网的访问,又增加外网端口的访问权限。最后,在客户端主机,通过"telnet"命令,检查3306端口已经可以通过客户端主机连接了。
2、客户端装好mysql client,发现root用户无法连接,也就是客户端无法用workbench实现数据库、用户、数据表等的操作。这里有两个办法,一个是直接先授权root用户,可以在任何主机访问,然后再新建数据库、添加表等;另一种方法,是通过服务器端mysql指令,添加新数据库,新的用户,然后赋予用户所有主机的连接权限,算是一步到位。
方法一: 将root用户的权限改成任何主机都能访问:
在服务器上,运行MySQL 5.7 Command Line Client,然后执行以下命令:
(1)use mysql; 进入mysql数据库
(2)select host,user,password from user; 查询数据库的用户信息
(3)update user set host=‘%‘ where host=‘localhost‘; 将上表中root的访问主机改为所有
(4)flush privileges; 刷新权限
(5)exit; 退出mysql
完成以上步骤,在客户端主机workbench中,用root/password,即可登陆了。
方法二:直接通过mysql命令,创建数据库,用户信息,以及客户端主机访问权限设置。
在服务器上,运行MySQL 5.7 Command Line Client,然后执行以下命令:
(1)show databases; 查看mysql服务器上已经存在的数据库。下面新建时,避免建重复的数据库
(2)create database SZY; 创建数据库“SZY”
(3)create user szy identified by "szy"; 创建szy用户,设定密码szy
(4)grant all privileges on SZY.*to‘szy‘@‘%‘identified by ‘szy‘ with grant option; 给用户赋予指定数据库的所有权限,并允许任何客户端主机连接
(5)flush privileges; 刷新上面权限设置
(6)exit; 退出mysql
完成以上命令,在客户端尝试连接,如下:
注意:关于sql命令直接在服务器上的mysql命令管理器质性就行;每个sql命令都必须以“;”结束,否则报错,或质性不成功。