直入正题>>>>>
附:官方文档
切到mysql库 , 查看一下当前的user信息
mysql> use mysql;
Database changed
mysql> select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+-----------+------------------+-----------------------+
4 rows in set (0.00 sec)
host : 允许的客户端主机名
重点介绍 % : 允许 任何主机还可以是 空白(同%,优先级更低)、 IP地址、 CIDR 表示法的ip、带有子网掩码的ip
user : 允许的用户名
这就是一个登陆用户名
现在可以看到,root账号是只允许 localhost 的客户端连接的
上面这种情况一般是mysql安装好的默认状态,我不想公开root,我来新建一个账号供远程访问
1、创建一个供远程访问的账户
创建用户 账号:account 密码 123456 (注意改为自己的)
mysql> create user 'account'@'%' identified by '123456';
Query OK, 0 rows affected (0.01 sec)
'account'@'%' 其中 account是账号,% 就是上面提到的 host
2、使用现有账户供远程访问
mysql> update user set host = '%' where user ='account';
其中 account 是你现有的账号
上面两步(任意一步)操作完就可以使用该账号远程连接了,若还是不行,请看最后提示
3、更新内存信息(好像不用也行)
FLUSH PRIVILEGES;
4、远程访问开启了,设置授权列表
查看账号都有哪些数据库的权限,以下显示的是只有 my_database 数据库的所有权限(ALL PRIVILEGES)
show grants for account@'%';
+--------------------------------------------------------+
| Grants for account@% |
+--------------------------------------------------------+
| GRANT USAGE ON *.* TO `account`@`%` |
| GRANT ALL PRIVILEGES ON `my_database`.* TO `account`@`%` |
+--------------------------------------------------------+
#user=accont host=% 的账户 开放Test数据库的所有表的 所有 权限
grant all privileges on `Test`.* to 'account'@'%' ;
#user=accont host=% 的账户 开放Test数据库的所有表的 查询 权限
grant select privileges on `Test`.* to 'account'@'%';
#user=accont host=% 的账户 开放所有数据库的所有表的 所有 权限
grant all privileges on *.* to 'account'@'%';
#权限参考
all 所有权限
select 查询权限
insert 插入权限
delete 删除权限
update 更新权限
FLUSH PRIVILEGES; #刷新权限
附:删除user
DROP USER 'user名'@'host名'
附:若是不能远程访问,这一步可供参考
找到mysql的配置文件 my.cnf
1 # Default Homebrew MySQL server config
2 [mysqld]
3 # Only allow connections from localhost
4 bind-address = 127.0.0.1
5 mysqlx-bind-address = 127.0.0.1
上面两个ip默认是本地的,修改为 0.0.0.0 然后重启mysql