进入客户端
我们可以直接在终端中输入 mysql 进入终端,但是几乎没有什么权限,因为我们还没有登陆。新出现的 mysql>
意味着我们可以在后面输入 MySQL 指令。
我们还可以通过指定用户名和密码的方式登录指定的用户操作数据库:
1 | mysql -uroot -p |
这行代码中,-u 后面接的是用户名,意思是要登陆 root 用户。-p 后面可以解密码,但是此时密码会以明文的形式出现,有可能会不安全。建议输入完 -p 之后按回车,然后再按照提示,输入密码。此时的密码会以 * 代替,安全性大大提高。MySQL 5.6 版本,root 用户初始密码为空,可以直接登录。
如果服务器在局域网内的另一台计算机上,需要在用户名后,用 -h 指定另一台计算机的 IP:
1 | mysql -uguest -h192.168.34.112 -p |
退出客户端
推出客户端的命令有两个:
1 | exit |
这两个命令的功能完全一样,随意使用哪一个都可以推出客户端。
用户名和密码设置
如果想要知道当前登录的用户名是什么,可以使用命令:
1 | select user(); |
需要注意的是,MySQL 中,每一条命令结束之后都要使用 ;
表示命令的终止。
输出的结果中,root
表示的是用户名;localhost
指代的是 IP 地址。
MySQL 5.6 版本的 root 用户初始密码为空。root 用户有着最高的管理权限,不能让人随意登录。于是,我们需要给它设置密码,保护我们的数据安全:
1 | set password = password('123'); |
password()
用来给密码使用 MD5 的方式加密。密码需要使用引号引起来。
我这里的密码是 123,练习时是没问题的。但是在真正的生产环境中,还是要使用复杂一点的密码,保障数据的安全。
授权其他用户访问数据库
我们可以授权数据库给某个用户,其命令为:
1 | grant all on *.* to 'username'@'%' identified by '123'; |
使用下面的命令,让更改立即生效:
1 | flush privileges; |
在授权用户的命令中:
all
意味着授权所有权限。我们也可以限制用户的权限,例如将它改成select
等*.*
意味着将所有数据库的所有内容全部开放。但是更多时候,我们只会给一个用户开放一个数据库的权限,我们可以指定授权的数据库,例如test.*
。'username'
指代的当然是用户名。'%'
表示,对于所有 IP 的计算机,只要用户名和密码正确,都可以访问。我们也可以限制 IP 段位,例如'192.168.10.%'
。% 在这里可以指带任意数字。有时候远程访问时的 IP 会显示为localhost
,需要进行其他设置。目前,我们还没能力解决类似的问题,暂时还是用一个 % 指代所有 IP 即可。'123'
是授权用户的密码。
有了上面的知识,我们就可以通过下面的步骤,让局域网中的其他人访问我们的数据库:
- 我是 root 用户,我可以给别人一个权限,让他能够访问我
- 使用
create database 数据库名
创建一个想要共享的数据库 - 使用命令
grant all on 数据库名.* to '用户名'@'%' identified by '密码';
,将数据库的所有权限开放给指定用户 - 将用户名和密码告诉我们的合作伙伴
- 伙伴通过用户名和密码连接我们的数据库:
mysql -u用户名 -hIP -p