最近打算给服务器端的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 | GRANT all privileges ON *.* TO "user"@"%" IDENTIFIED BY '123456' WITH GRANT OPTION; |
上述语句对用户名为user
, 密码为123456
的用户在所有的数据库上授予了所有的权限.
- 授予只读权限
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 | # Instead of skip-networking the default is now to listen only on |
其中的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/