I currently run an Rails app on a single VPS with it’s own MySQL database. This database also contains the users table. We are currently building a second application which should have the same users. If one registers for either, he has an account for both.
However, the problem is that this second (PHP) application must be hosting at another location. What are the best practices here? Can I directly connect to the external database without causing a big delay? Should I sync them? Create a API at the first?
I’m searching for the most maintainable method possible. Thank you.
You can allow the second host access to the first MySQL server. The best practices (as far as I’m aware) to do this would be to create a new user account, give it the required privileges to the users table, only allow access to it from the IP or domain of the second host and using a secure password. You would run this query on the MySQL server:
Needless to say you would replace ‘mydatabase.users’ with your database and table name, ‘mynewuser’ with the username of the user you want to have access (you can put anything here, the user will be automatically created), ‘123.123.123.123’ with the IP or domain name of your second server and ‘mysecurepassword’ with a good and long password, preferably randomly generated.
Your second server would now be able to connect to the MySQL server and have
ALLprivileges (you can change that to what ever privileges it needs) on the mydatabase.users table.MySQL 5.6 GRANT Syntax
Greensql.com on MySQL remote access best practices
To minimize the small performance penalty I would refrain from creating multiple MySQL connections (Try to use as few as possible, preferably just one). I’m not 100% on the following, but I’m pretty sure it would be a great idea to reduce the amount of separate queries you execute as well. Instead of running 10 separate inserts, run one insert with multiple
VALUESsegments, e.g.I’m sure MySQL Prepared Statements would also be of considerable help reducing the speed penalty