dlo*_*dlo 15 mysql mysql-replication
当我最初设置主到主复制时,我使用了:
binlog-ignore-db=mysql
Run Code Online (Sandbox Code Playgroud)
并且一直在手动同步用户帐户和授权。这就是我当时使用的操作指南中的做法。但是有什么理由我不应该删除这一行并允许mysql数据库本身也进行复制?
如果是这样:在我进行更改之前,除了确保两者的所有授权都相同(或者更好地说明,整个 mysql 数据库是相同的)之外,还有什么我应该仔细检查或注意的吗?
Rol*_*DBA 12
完全有可能在不知道SQL GRANT 命令的情况下给自己 mysql 权限。
示例:以下是使用 SQL GRANT 从任何名为 superdba 且密码为 ClarkKent 的地方使用 SQL GRANT 创建您自己的具有完全权限的用户:
GRANT ALL PRIVILEGES ON *.* TO superdba@'%' IDENTIFIED BY 'ClarkKent' WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)
以下是无需 GRANT 命令即可执行此操作的方法:
首先,这里是 MySQL 5.1.51 的 mysql.user
mysql> desc mysql.user;
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------------+-----------------------------------+------+-----+---------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(16) | NO | PRI | | |
| Password | char(41) | NO | | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
| Delete_priv | enum('N','Y') | NO | | N | |
| Create_priv | enum('N','Y') | NO | | N | |
| Drop_priv | enum('N','Y') | NO | | N | |
| Reload_priv | enum('N','Y') | NO | | N | |
| Shutdown_priv | enum('N','Y') | NO | | N | |
| Process_priv | enum('N','Y') | NO | | N | |
| File_priv | enum('N','Y') | NO | | N | |
| Grant_priv | enum('N','Y') | NO | | N | |
| References_priv | enum('N','Y') | NO | | N | |
| Index_priv | enum('N','Y') | NO | | N | |
| Alter_priv | enum('N','Y') | NO | | N | |
| Show_db_priv | enum('N','Y') | NO | | N | |
| Super_priv | enum('N','Y') | NO | | N | |
| Create_tmp_table_priv | enum('N','Y') | NO | | N | |
| Lock_tables_priv | enum('N','Y') | NO | | N | |
| Execute_priv | enum('N','Y') | NO | | N | |
| Repl_slave_priv | enum('N','Y') | NO | | N | |
| Repl_client_priv | enum('N','Y') | NO | | N | |
| Create_view_priv | enum('N','Y') | NO | | N | |
| Show_view_priv | enum('N','Y') | NO | | N | |
| Create_routine_priv | enum('N','Y') | NO | | N | |
| Alter_routine_priv | enum('N','Y') | NO | | N | |
| Create_user_priv | enum('N','Y') | NO | | N | |
| Event_priv | enum('N','Y') | NO | | N | |
| Trigger_priv | enum('N','Y') | NO | | N | |
| ssl_type | enum('','ANY','X509','SPECIFIED') | NO | | | |
| ssl_cipher | blob | NO | | NULL | |
| x509_issuer | blob | NO | | NULL | |
| x509_subject | blob | NO | | NULL | |
| max_questions | int(11) unsigned | NO | | 0 | |
| max_updates | int(11) unsigned | NO | | 0 | |
| max_connections | int(11) unsigned | NO | | 0 | |
| max_user_connections | int(11) unsigned | NO | | 0 | |
+-----------------------+-----------------------------------+------+-----+---------+-------+
39 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
只需执行这些 SQL 命令:
INSERT INTO mysql.user SET
Host='%',User='superdba',Password=PASSWORD('ClarkKent'),
Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',
Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',
Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',
Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',
Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',
Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',
Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',
Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y';
FLUSH PRIVILEGES;
Run Code Online (Sandbox Code Playgroud)
INSERT 是一个合法的 SQL 语句,可以进入二进制日志。您是否希望有人运行它并在网络上传输可见的密码?坐在master上的二进制日志?坐在中继登录上的奴隶?
有这个指令
binlog-ignore-db=mysql
Run Code Online (Sandbox Code Playgroud)
防止使用此类 SQL 放弃 mysql 权限。但是,不能以这种方式停止 GRANT。因此,请确保您执行如下授权:
SET SQL_LOG_BIN=0;
GRANT ...
Run Code Online (Sandbox Code Playgroud)
以防止 GRANT 从 master 遍历到 slave。
| 归档时间: |
|
| 查看次数: |
5468 次 |
| 最近记录: |