最近打算给服务器端的MySQL配置一个只读远程的远程账号, 找了一圈居然没有一篇博客能完整解决这个问题, 所以这篇博客会记录MySQL的一些常见需求的操作方法.

创建账号

创建账号的语句非常简单, 执行如下的SQL语句, 即可创建名为lizec的用户.

1
CREATE USER lizec;

授予权限

授权基本格式

授权语句的格式如下

1
GRANT <methods> ON <databaseName>.<tableName> TO "<username>"@"%" IDENTIFIED BY '<password>' WITH GRANT OPTION;

其中<username><password>分别表示需要授权的账号和密码, 使用相应的值替换即可.

<databaseName><tableName>表示需要授权的数据库和表的名字, 例如test.*表示授予test数据库下所有表的权限, 而*.*表示授予所有数据库的所有表的权限.

<methods>表示授予用于允许的操作, 可选值为all privileges, select, delete, update, create, drop. 这些取值对应了相关的SQL操作.

授权举例

下面用几个例子解释授权语句

  1. 授予所有权限
1
GRANT all privileges ON *.* TO "user"@"%" IDENTIFIED BY '123456' WITH GRANT OPTION;

上述语句对用户名为user, 密码为123456的用户在所有的数据库上授予了所有的权限.

  1. 授予只读权限
1
GRANT select ON test1.* TO "user"@"%" IDENTIFIED BY '123456' WITH GRANT OPTION;

上述语句对用户名为user, 密码为123456的用户在test1数据库上授予了SELECT权限, 因此该用户只能在此数据库上执行SELECT操作

参考文献

MySQL允许远程登录

1. 修改监听地址

首先打开MySQL的配置文件/etc/mysql/mysql.conf.d/mysqld.cnf, 找到如下的段落

1
2
3
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1

其中的bind-address决定了MySQL服务的监听IP地址, 按照上面的配置, 仅允许本地的IP地址连接MYSQL. 可以将这一行注释掉, 或者改为0.0.0.0使所有的IP地址都能访问MySQL.

2. 设置防火墙

这一步非常关键, 如果设置了防火墙, 需要将MySQL的3306端口放行, 否则无法访问MySQL.

参考资料

最后更新: 2024年03月27日 17:30

版权声明:本文为原创文章,转载请注明出处

原始链接: https://lizec.top/2021/01/20/MySQL%E7%AC%94%E8%AE%B0%E4%B9%8B%E5%9F%BA%E6%9C%AC%E9%85%8D%E7%BD%AE/