创建一个只读用户
grant select on *.* to readonly @ '%' identified by 'readonly';
注:这里的%是指所有的用户,但是不包含本机(localhost),如果在本地也可以链接,需要给本地ip授权(localhost,127.0.0.1,或内网指定ip)
如果授权为localhost,链接时也需要指定为-h127.0.0.1
在linux服务器上连接数据库时,有两种连接方式,分别为:
1.tcp连接
2.linux socket(默认)
在本地连接时:
mysql -uroot -p -P3306
如果有多个实例,上述的连接是失败的,因为默认是socket链接,这样如果多个实例,就不能找到确切的socket(即时找到了,也是巧合这个库的socket恰巧是安装在默认路径)。
所以在多个实例前提下,想要是实现上述链接,需要指定IP或serverName或--protocol=TCP
问题一:
在授权为%(非本地主机授权)的时候,用这个账号登陆mysql,若不输入密码也可以登陆成功,但是只显示两个数据库
这个是因为mysql都会有默认的数据库,让所有用户可以访问。即时没有密码或忘掉密码。
问题二:
局域网内另外一台机器访问mysql
[root@co20 ~]# mysql -h192.168.0.40 -u readonly -p
Enter password:
ERROR 2003 (HY000): Can't connect to MySQLserver on '192.168.0.40' (113)
防火墙没有关闭
/etc/init.d/iptables stop
问题三:
局域网内另外一台机器访问mysql
mysql -h192.168.0.40 -u readonly -p
Enter password:
ERROR 1045 (28000): Access denied for user 'readonly'@'192.168.0.20' (using password: NO)
没输入密码或者密码不对问题四:
[root@testing mysql]# mysql -u readonly -P 3306 -p
Enter password:
ERROR 1045 (28000): Access denied for user 'readonly'@'localhost' (using password: YES)
授权为%,而在本地localhost不允许登陆,即没有权限(权限取决于user和host)