MySQL日常维护

删除MySQL 账号

use mysql
delete from user where user='xiewenming';

授权账号密码

GRANT SELECT,INSERT,UPDATE,DELETE  ON ambari.* TO 'ambariuser'@'192.168.251.0/255.255.255.0'  IDENTIFIED BY '898FAG8Aw9uy';
FLUSH PRIVILEGES;

GRANT SELECT,INSERT,UPDATE,DELETE  ON hive.* TO 'hiveuser'@'192.168.251.0/255.255.255.0' IDENTIFIED BY '999FAG89Awuy';
FLUSH PRIVILEGES;
View Code

授权已有账号到主机

GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%';
FLUSH PRIVILEGES;

导入SQL文件

mysql> source /home/xiewenming/cm_checkout_result.sql;
Connection id:    952012507
Current database: cms
Query OK, 0 rows affected (0.00 sec)
View Code

 创建数据库设置字符集

create database hive character set utf8 ; 

导入数据库(windows 的数据文件到linux下面可能会乱码)
1、首先建空数据库
mysql>create database abc;

2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
#mysql -uabc_f -p abc < abc.sql

今天监控显示mysql主从复制出错了,信息如下:

mysql> show slave statusG;
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.33.230
                  Master_User: repl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: master-bin.000774
          Read_Master_Log_Pos: 202924128
               Relay_Log_File: 192-168-33-236-relay-bin.000065
                Relay_Log_Pos: 202924292
        Relay_Master_Log_File: master-bin.000774
             Slave_IO_Running: No
            Slave_SQL_Running: Yes
              Replicate_Do_DB: 
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 202924128
              Relay_Log_Space: 202924521
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: NULL
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 1236
                Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Client requested master to start replication from position > file size; the first event 'master-bin.000774' at 202924128, the last event read from './master-bin.000774' at 4, the last byte read from './master-bin.000774' at 4.'
               Last_SQL_Errno: 0
               Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
             Master_Server_Id: 1
                  Master_UUID: f7c24af7-a54a-11e6-88b4-525400169c04
             Master_Info_File: /Data/mysql/master.info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it
           Master_Retry_Count: 86400
                  Master_Bind: 
      Last_IO_Error_Timestamp: 170817 15:37:11
     Last_SQL_Error_Timestamp: 
               Master_SSL_Crl: 
           Master_SSL_Crlpath: 
           Retrieved_Gtid_Set: 
            Executed_Gtid_Set: 
                Auto_Position: 0
1 row in set (0.00 sec)

ERROR: 
No query specified
show slave statusG

在mysql.cnf里面有一句跳过经常出现的错误,但是还是报了1236错误

slave-skip-errors = 1062,1091,1396,1050,1060,1054,1146,1236

尝试stop slave ; start slave 还是没有恢复

然后就照着上面的错误提示更新pos点

mysql> stop slave;
Query OK, 0 rows affected (0.01 sec)

mysql> change master to master_log_file='master-bin.000774', master_log_pos=4;
Query OK, 0 rows affected (0.12 sec)

mysql> start slave;
Query OK, 0 rows affected (0.00 sec)

然后查看状态就恢复正常了,具体原因再慢慢分析,,,,,,,   

有时候还会报下面这个信息

 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'could not find next log; the first event 'mysql-bin.001891' at 897184977, the last event read from './mysql-bin.001891' at 1109808979, the last byte read from './mysql-bin.001891' at 1109808979.'
上面这个错误尝试stop slave ; start slave 就恢复了
View Code
user表中host列的值的意义
%              匹配所有主机
localhost    localhost不会被解析成IP地址,直接通过UNIXsocket连接
127.0.0.1      会通过TCP/IP协议连接,并且只能在本机访问;
::1                 ::1就是兼容支持ipv6的,表示同ipv4的127.0.0.1
 
 授权用户有授权权限
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' IDENTIFIED BY '99wuy' WITH GRANT OPTION;

grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利。

grant select on testdb.* to common_user@’%’

grant insert on testdb.* to common_user@’%’

grant update on testdb.* to common_user@’%’

grant delete on testdb.* to common_user@’%’

或者,用一条 MySQL 命令来替代:

grant select, insert, update, delete on testdb.* to common_user@’%’

9>.grant 数据库开发人员,创建表、索引、视图、存储过程、函数。。。等权限。

grant 创建、修改、删除 MySQL 数据表结构权限。

grant create on testdb.* to developer@’192.168.0.%’;

grant alter on testdb.* to developer@’192.168.0.%’;

grant drop on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 外键权限。

grant references on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 临时表权限。

grant create temporary tables on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 索引权限。

grant index on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 视图、查看视图源代码 权限。

grant create view on testdb.* to developer@’192.168.0.%’;

grant show view on testdb.* to developer@’192.168.0.%’;

grant 操作 MySQL 存储过程、函数 权限。

grant create routine on testdb.* to developer@’192.168.0.%’; -- now, can show procedure status

grant alter routine on testdb.* to developer@’192.168.0.%’; -- now, you can drop a procedure

grant execute on testdb.* to developer@’192.168.0.%’;

10>.grant 普通 DBA 管理某个 MySQL 数据库的权限。

grant all privileges on testdb to dba@’localhost’

其中,关键字 “privileges” 可以省略。

11>.grant 高级 DBA 管理 MySQL 中所有数据库的权限。

grant all on *.* to dba@’localhost’

12>.MySQL grant 权限,分别可以作用在多个层次上。

1. grant 作用在整个 MySQL 服务器上:

grant select on *.* to dba@localhost; -- dba 可以查询 MySQL 中所有数据库中的表。

grant all on *.* to dba@localhost; -- dba 可以管理 MySQL 中的所有数据库

2. grant 作用在单个数据库上:

grant select on testdb.* to dba@localhost; -- dba 可以查询 testdb 中的表。

3. grant 作用在单个数据表上:

grant select, insert, update, delete on testdb.orders to dba@localhost;

4. grant 作用在表中的列上:

grant select(id, se, rank) on testdb.apache_log to dba@localhost;

5. grant 作用在存储过程、函数上:

grant execute on procedure testdb.pr_add to ’dba’@’localhost’

grant execute on function testdb.fn_add to ’dba’@’localhost’

注意:修改完权限以后 一定要刷新服务,或者重启服务,刷新服务用:FLUSH PRIVILEGES。
 

use mysql;
show grants for 'xxx'@'118.193.22.138/255.255.255.255';
grant drop on monkey_admin.* to 'xxx'@'118.193.22.138/255.255.255.255';
flush privileges;

 
优化sql语句,添加索引
MariaDB [thrurls]> select * from yourls_url where url="http://2pchat.mo.cool/2pinvite_listen2/BgMJAQECAQ"
    -> ;
+----------+-------------------------------------------------------+--------+---------------------+----------------+--------+
| keyword  | url                                                   | title  | timestamp           | ip             | clicks |
+----------+-------------------------------------------------------+--------+---------------------+----------------+--------+
| y-h-64ax | http://2pchat.mo.cool/2pinvite_listen2/BgMJAQECAQ | Monkey | 2018-11-28 14:10:54 | 54.149.220.216 |      0 |
+----------+-------------------------------------------------------+--------+---------------------+----------------+--------+
1 row in set (25.47 sec)

explain分析

MariaDB [thrurls]> explain select * from yourls_url where url="http://2pchat.monkey.cool/2pinvite_listen2/BgMJAQECAQ";
+------+-------------+------------+------+---------------+------+---------+------+--------+-------------+
| id   | select_type | table      | type | possible_keys | key  | key_len | ref  | rows   | Extra       |
+------+-------------+------------+------+---------------+------+---------+------+--------+-------------+
|    1 | SIMPLE      | yourls_url | ALL  | NULL          | NULL | NULL    | NULL | 613317 | Using where |
+------+-------------+------------+------+---------------+------+---------+------+--------+-------------+
1 row in set (0.00 sec)

添加索引

 ALTER TABLE yourls_url ADD INDEX idx_url (url(50));

再次查询

MariaDB [thrurls]> select * from yourls_url where url="http://2pchat.monkey.cool/2pinvite_listen2/BgMJAQECAQ";
+----------+-------------------------------------------------------+--------+---------------------+----------------+--------+
| keyword  | url                                                   | title  | timestamp           | ip             | clicks |
+----------+-------------------------------------------------------+--------+---------------------+----------------+--------+
| y-h-64ax | http://2pchat.monkey.cool/2pinvite_listen2/BgMJAQECAQ | Monkey | 2018-11-28 14:10:54 | 54.149.220.216 |      0 |
+----------+-------------------------------------------------------+--------+---------------------+----------------+--------+
1 row in set (0.00 sec)

 按照时间排序

select * from yourls_url order by timestamp desc limit 100 ;
 
原文地址:https://www.cnblogs.com/xiewenming/p/7382147.html