Re: Replication and user privileges
Jim <[email protected]> Mon, 25 Feb 2019 19:29:24 -0500
| Newsgroups | gmane.comp.db.mysql.general |
|---|---|
| Message-ID | <[email protected]> |
On 2/25/2019 5:46 PM, shawn l.green wrote: > Hello Jim, > > On 2/25/2019 5:04 PM, Jim wrote: >> I have a question about mysql replication. I believe I understand most >> of it, but have a question about user privileges. >> >> I understand on the master, the replication user must have the >> Repl_slave_priv privilege as described here: >> https://dev.mysql.com/doc/refman/8.0/en/privileges-provided.html#priv_replication-slave >> >> >> >> My question is about what replication-related users and privileges must >> exist on the slave. >> >> So, for example, if an insert on the master that is to be replicated is >> performed by user 'abc' with proper insert permissions on the master, >> does that same 'abc' user with same insert permissions need to exist on >> the slave as well? >> >> In other words, what user is performing the replication operation on the >> slave? I don't see any indication of users referenced in the bin logs >> that I have examined on the master. Are user and privileges regarding >> replicated queries irrelevant on the slave and that is handled all >> internally via the replication thread with no regard to user privileges? >> >> Thank you. >> Jim >> > > Your final supposition is correct. All privileges were checked and > verified on the master when the original command was executed. The > Replication system on the slave is going to repeat that change as well > as possible given the state of its copy of the data without regards to > "who originally performed this change" on the upstream master. > > We do not store credentials in the Binary Log because they are not > important to either of the purposes of the Binary Log > > * point-in-time recovery > or > * Replication (which is very much like an automated, continuous > point-in-time recovery) > > === > > That replication account you mentioned, on the master, is required to > give a slave (and you could have several) enough rights to read the > Binary Log and not much else. This allows you to create an account > that can login from a remote location with the "least privileges" > necessary to do its job. This minimizes your data's exposure should > that account become compromised. > > Many other accounts could also have the REPL_SLAVE_PRIV privilege and > any of those could be used by a slave to do the same job. However > losing control over one of those more privileged accounts could pose a > higher risk to your data. > > Thanks, Shawn. Your response confirms what I had assumed was happening. So bottom line... what I plan to do is strip the various insert/update/delete privileges from appropriate db users on my slaves. I had placed them there originally because I thought they would be needed for the replicated queries, but not true based on your response. I only want the various mysql users used by my code to have select privs on the slaves so that if somehow a slave was mistakenly written to via a bug in my code, that write would fail and I would receive the error. The slaves should only be used for selects and should never experience a write. That would make sense based on our discussion, correct? Thanks again. Jim -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/mysql