Each slave must connect to the master using a MySQL user name
and password, so there must be a user account on the master that
the slave can use to connect. Any account can be used for this
operation, providing it has been granted the
REPLICATION SLAVE
privilege. You
may wish to create a different account for each slave, or
connect to the master using the same account for each slave.
You need not create an account specifically for replication.
However, you should be aware that the user name and password
will be stored in plain text within the
master.info
file (see
Section 16.2.2.2, “The Slave Status Files”). Therefore, you may want to
create a separate account that has privileges only for the
replication process, to minimize the possibility of compromise
to other accounts.
To create a new acccount, use CREATE
USER
. To grant this account the privileges required
for replication, use the GRANT
statement. If you create an account solely for the purposes of
replication, that account needs only the
REPLICATION SLAVE
privilege. For
example, to set up a new user, repl
, that can
connect for replication from any host within the
mydomain.com
domain, issue these statements
on the master:
mysql>CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
mysql>GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';
See Section 12.4.1, “Account Management Statements”, for more information on statements for manipulation of user accounts.
User Comments
GRANT REPLICATION SLAVE ON *.*
-> TO 'repl'@'remotehost.mydomain.com' IDENTIFIED BY 'slavepass';
I had to use only the hostname of the slave.
The host that you use for this GRANT statement will vary depending on the reverse lookup of the host you are using for replication. In my case this will be read from my /etc/hosts in the order that hosts are listed. So if you have in your /etc/hosts
192.168.1.3 replicant.example.com replicant
It will resolve differently than
192.168.1.3 replicant replicant.example.com
Also, if you change this after attempting to start replication, you will need to FLUSH HOSTS to get the updated /etc/hosts to affect the host cache in mysql.
Add your own comment.