我一直在使用SQL Server,现在正在使用MySQL进行项目.使用SQL Server,如果他们知道主机,用户名和密码,我们的开发人员可以连接到本地计算机上的远程数据库.但是,对于MySQL,要让开发人员从本地机器访问,我必须登录MySQL并执行:
GRANT ALL ON *.* to user@address IDENTIFIED BY 'password';
flush privileges;
Run Code Online (Sandbox Code Playgroud)
address开发人员计算机的IP地址在哪里.当然,如果他们改变网络,我必须再次执行它.有没有办法允许所有远程连接,就像我在SQL Server中遇到的那样,或者出于某种原因这是个坏主意?我们还有用户名和密码..我显然有点困惑.
另外:这是一个开发数据库,只能从我们的内部网络访问.我理解为什么让每个人都能访问生产数据库是个坏主意.
Ica*_*rus 145
正如上面Ryan所指出的,你需要的命令是
GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)
但请注意,文档表明,为了使其工作,localhost必须为同一用户创建另一个用户帐户; 否则,自动创建的匿名帐户mysql_install_db优先,因为它具有更具体的主机列.
换一种说法; 以便用户user能够从任何服务器连接; 需要创建2个帐户,如下所示:
GRANT ALL ON *.* to user@localhost IDENTIFIED BY 'password';
GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)
阅读完整的文档.
以下是相关的参考资料:
以root身份连接到服务器后,您可以添加新帐户.以下语句使用GRANT设置四个新帐户:
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
-> WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
-> WITH GRANT OPTION;
mysql> CREATE USER 'admin'@'localhost';
mysql> GRANT RELOAD,PROCESS ON *.* TO 'admin'@'localhost';
mysql> CREATE USER 'dummy'@'localhost';
Run Code Online (Sandbox Code Playgroud)
这些语句创建的帐户具有以下属性:
其中两个帐户的用户名为monty,密码为some_pass.这两个帐户都是具有完全权限的超级用户帐户.只有从本地主机连接时,才能使用'monty'@'localhost'帐户.'monty'@'%'帐户使用'%'通配符作为主机部分,因此可用于从任何主机进行连接.
有必要让monty帐户能够从任何地方连接为monty.如果没有localhost帐户,当monty从本地主机连接时,mysql_install_db创建的localhost的匿名用户帐户将优先.因此,monty将被视为匿名用户.这样做的原因是匿名用户帐户具有比'monty'@'%'帐户更具体的主机列值,因此在用户表排序顺序中更早出现.(用户表排序将在第6.2.4节"访问控制,第1阶段:连接验证"中讨论.)
这对我来说似乎很愚蠢,除非我误解了这一点.
Dav*_*ker 25
您可以通过编辑/etc/my.cnf来禁用所有安全性:
[mysqld]
skip-grant-tables
Run Code Online (Sandbox Code Playgroud)
Rya*_*yan 11
GRANT ALL ON *.* to user@'%' IDENTIFIED BY 'password';
Run Code Online (Sandbox Code Playgroud)
允许特定用户从任何地方登录.
这很糟糕,因为它删除了一些安全控制,即帐户遭到入侵.
小智 10
sudo apt-get install mysql-server
Run Code Online (Sandbox Code Playgroud)
[mysqld]
#### Unix socket settings (making localhost work)
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
#### TCP Socket settings (making all remote logins work)
port = 3306
bind-address = 0.0.0.0
Run Code Online (Sandbox Code Playgroud)
mysql -u root -p
grant all privileges on *.* to ‘username’@‘%’ identified by ‘password’;
Run Code Online (Sandbox Code Playgroud)
sudo ufw allow 3306
Run Code Online (Sandbox Code Playgroud)
sudo service mysql restart
Run Code Online (Sandbox Code Playgroud)