MySQL
  • mysql主从赋值,从机验证报错:ERROR 3021(HY000):this operation cannot be performed with a running salve io thread

    原因: mysql从机上已经进行过绑定了,如果继续绑定需要先进行重置。 解决办法 1、停止已经启动的绑定 stop slave 2、重置绑定 reset master 3、执行复制主机命令 change master to master_host = '192.168.12.1' master_user = 'slave' ,master_password ='123456' ,master_log_file = 'mysql-bin.000004',master_log_pos = '881' 4、发现此时已经不报错 5、启动复制 start slave

    SE_You 2024-04-10
    19 0 0
  • MySQL添加用户删除用户与授权(老版本)

    MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意每行后边都跟个;表示一个命令语句结束): 1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 创建用户: mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); 这样就创建了一个名为:test 密码为:1234 的用户。 注意:此处的"localhost",是指该用户只能在本地登录,不能在另外一台机器上远程登录。如果想远程登录的话,将"localhost"改为"%",表示在任何一台电脑上都可以登录。也可以指定某台机器可以远程登录。 然后登录一下: mysql>exit; @>mysql -u test -p @>输入密码 mysql>登录成功 2.为用户授权 授权格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"; 登录MYSQL(有ROOT权限),这里以ROOT身份登录: @>mysql -u root -p @>密码 首先为用户创建一个数据库(testDB): mysql>create database testDB; 授权test用户拥有testDB数据库的所有权限(某个数据库的所有权限): mysql>grant all privileges on testDB.* to test@localhost identified by '1234'; mysql>flush privileges;//刷新系统权限表 格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by "密码"; 如果想指定部分权限给一用户,可以这样来写: mysql>grant select,update on testDB.* to test@localhost identified by '1234'; mysql>flush privileges; //刷新系统权限表 授权test用户拥有所有数据库的某些权限: mysql>grant select,delete,update,create,drop on *.* to test@"%" identified by "1234"; //test用户对所有数据库都有select,delete,update,create,drop 权限。 //@"%" 表示对所有非本地主机授权,不包括localhos……

    SE_You 2024-04-09
    15 0 0
  • MySQL慢查询日志分析

    一:查询slow log的状态,如示例代码所示,则slow log已经开启。 mysql> show variables like '%slow%'; +---------------------+------------------------------------------+ | Variable_name | Value | +---------------------+------------------------------------------+ | log_slow_queries | ON | | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /mysqllog/slow_log/slow_queries_3306.log | +---------------------+------------------------------------------+ 4 rows in set (0.00 sec)   如果没有开启慢查询日志有以下两种方法:    在配置文件[mysqld]中添加slow_query_log = ON和long_query_time = 1,然后重启MySQL即可生效。   set global slow_query_log=1; 在线开启。如果MySQL发生重启,就会失效,如果要永久生效,就必选修改配置文件。 二:slow log的日志相关参数详解 slow_query_log :是否开启慢查询日志,1表示开启,0表示关闭。 log-slow-queries :旧版(5.6以下版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log slow-query-log-file:新版(5.6及以上版本)MySQL数据库慢查询日志存储路径。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log long_query_time :慢查询阈值,当查询时间多于设定的阈值时,记录日志。 log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。 log_output:日志存储方式。log_output='FILE'表示将日志存入文件,默认值……

    SE_You 2024-04-08
    18 0 0
  • mysql优化——定位慢查询

    1、show status 命令 命令使用方式:show [session|global] status like 'slow_queries' 如果你不写  [session|global] 默认是session 会话,指取出当前窗口的执行,如果你想看所有(从mysql 启动到现在,则应该 global) 执行show status 显示的数据库变量大概有291个。变量对应说明: http://www.ttlsa.com/mysql/mysql_show_status_descriptsions/ http://blog.chinaunix.net/uid-20204919-id-1972099.html http://lxneng.iteye.com/blog/451985 show status 常用的命令: show status like ‘uptime’ ; show stauts like ‘com_select’ show stauts like ‘com_insert’ ...类推 update delete show status like ‘connections’; //显示慢查询次数 show status like ‘slow_queries’; 2、mysql默认的慢查询 默认情况下,mysql认为10秒才是一个慢查询. show variables like ‘long_query_time’ ; //可以显示当前慢查询时间 set long_query_time=1 ;//可以修改慢查询时间   3、定位慢查询 show variables like '%slow%'; #查看MySQL慢查询是否开启 set global slow_query_log=ON; #开启MySQL慢查询功能 show variables like "long_query_time"; #查看MySQL慢查询时间设置,默认10秒 set global long_query_time=5; #修改为记录5秒内的查询 select sleep(6); #测试MySQL慢查询 show variables like "%slow%"; #查看MySQL慢查询日志路径 show global status like '%slow%'; #查看MySQL慢查询状态 或者 vi /etc/my.cnf #编辑,在[mysqld]段添加以下代码 slow-query-log = on #开启MySQL慢查询功能 slow_query_log_file = /var/run/mysqld/mysqld-slow.log #设置MySQL慢查询日志路径 long_query_time = 5 #修改为记录5秒内的查询,……

    SE_You 2024-04-07
    8 0 0
  • show variables like xxx 详解mysql运行时参数

    通过show variables like xxx 详解mysql运行时参数 本文参考以下网页: 1.http://dev.mysql.com/doc/refman/5.1/en/server-status-variables.htm 2.http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html 3.http://www.ibm.com/developerworks/cn/linux/l-tune-lamp-3.html 4.http://www.day32.com/MySQL/tuning-primer.sh 具体数值主要参考此工具 1, 查看MySQL服务器配置信息  mysql> show variables; 2, 查看MySQL服务器运行的各种状态值    mysql> show global status; 3, 慢查询 mysql> show variables like '%slow%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | log_slow_queries | OFF | | slow_launch_time | 2 | +------------------+-------+ mysql> show global status like '%slow%'; +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | Slow_launch_threads | 0 | | Slow_queries | 279 | +---------------------+-------+ 配置中关闭了记录慢查询(最好是打开,方便优化),超过2秒即为慢查询,一共有279条慢查询  4, 连接数  mysql> show variables like 'max_connections'; +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_connections | 500 | +-----------------+-------+ mysql> show global status like 'max_used_connections'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | Max_used_connections | 498 | +------------……

    SE_You 2024-04-03
    10 0 0
  • 【MySQL 系列】MySQL 起步篇

    文章目录 1、MySQL 简介 1.1、数据库介绍 1.2、MySQL 简介 1.3、MySQL 版本 2、安装 MySQL 数据库 3、连接 MySQL 数据库 3.1、使用 MySQL 命令行客户端 3.2、使用 Navicat 连接 MySQL 4、MySQL 示例数据库 4.1、Employees 示例数据库 4.2、World 示例数据库 4.3、Sakila 示例数据库 1、MySQL 简介 MySQL 是一个数据库管理系统。如果我们要了解 MySQL 是什么,我们首先需要了解什么是数据库。 1.1、数据库介绍 顾名思义,数据库就是存档某些数据的仓库。但是这个仓库不是一个实体仓库,也不存储实体物品,而是存放数据。比如我们常见的: 我们在大型超市购物时,我们购买的商品的价格和折扣等信息就存在一个数据库中。 我们手机上的联系人信息是一个列表,这个列表数据也存在一个数据库中。 电子商务网站中的商品的库存和价格信息也存在于服务器的数据库中。 汽车 4S 店的服务客户的记录信息也会存储在一个数据库中。 可以说,在现在的信息化系统中,数据库无处不在。 数据库是一个以某种有组织的方式存储的数据集合。当人们收集了大量的数据后,应该把它们保存起来进一步的处理,进一步地抽取有用的信息。现在人们借助计算机和数据库技术科学地保存了大量的数据,以便更好地利用这些数据资源。 1.2、MySQL 简介 MySQL 是一个开放源代码的、免费的关系型数据库管理系统,由瑞典 MySQL AB 公司开发,目前属于 Oracle 公司。 MySQL 官网:https://www.mysql.com/ 在 Web 开发领域,MySQL 是最流行、使用最广泛的关系数据库。 目前 MySQL 被广泛地应用在 Internet 上的大中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库。 MySQL 的海豚标志的名字叫 “sakila”,它是由 MySQL AB 的创始人从用户在 “海豚命名” 的……

    SE_Ning 2024-03-13
    16 0 0
  • MySQL安全配置之基本设置

      1. 安装最新的安全补丁 安全说明 确保数据库版本为最新并修复已知的安全漏洞。攻击者可能会利用已知的漏洞对MySQL服务器进行攻击。 检查方法 mysql> show variables where variable_name like 'version'; +---------------+--------+ | Variable_name | Value | +---------------+--------+ | version | 8.0.16 | +---------------+--------+ 1 row in set (0.00 sec) 显示当前的数据库版本,查看MySQL官网,比较补丁修复情况。 配置方法 安装最新版本的补丁或升级到最新版本。     2. 删除默认安装数据库test 安全说明 MySQL安装时默认创建一个测试数据库test,完全的空数据库,没有任何表,可以删除。测试数据库可以被所有用户访问,并且可以用来消耗系统资源。删除测试数据库将减少MySQL服务器的攻击面。 检查方法 mysql> show databases like 'test'; Empty set (0.00 sec) 检查test数据库是否存在。 配置方法   mysql> drop database test;     3. 设置“allow-suspicious-udfs”为“FALSE” 安全说明 该选项控制是否可以载入主函数只有 xxx 符的用户定义函数。默认情况下,该选项被关闭,并且只能载入至少有辅助符的 UDF。关闭allow-suspicious-udfs,可以防止通过共享对象文件加载存在威胁的UDFs函数。 检查方法 查看MySQL配置文件allow-suspicious-udfs参数的设定:cat /etc/my.cnf 确认allow-suspicious-udfs不等于TRUE 配置方法 修改MySQL配置文件my.cnf,删除以下安全参数 allow-suspicious-udfs=TRUE (或者将TRUE改为FALSE,具体效果一样) 重启mysql服务。   4. 禁用“local_infile” 安全说明 local_infile参数决定是否可以通过LOAD DATA LOCAL INFILE来实现加载或或选择位于MySQL客户端计算机上的文件。禁用local_infile可以阻止黑客……

    SE_Ning 2024-03-12
    43 0 0
  • MySQL安全配置之网络设置

      1. 设置“have_ssl”为YES 安全说明 在不受信任的网络上传输时,所有网络流量都必须使用ssl/tls。受SSL/TLS协议保护的MySQL有助于防止窃听和中间人攻击。 检查方法 mysql> show variables where variable_name='have_ssl'; +---------------+-------+ | Variable_name | Value | +---------------+-------+ | have_ssl | YES | +---------------+-------+ 1 row in set (0.00 sec) 查看返回值是否为YES。 配置方法 可参考:https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html   2. 设置远程用户的“ssl_type” * 安全说明 在不受信任的网络上传输时,所有网络流量都必须使用ssl/tls。对于通过网络进入系统的用户,应该基于每个用户强制执行SSL/TLS。受SSL/TLS协议保护的MySQL有助于防止窃听和中间人攻击。 检查方法 mysql> select user,host,ssl_type from mysql.user where not host in('::1','127.0.0.1','localhost'); +---------+-------------+----------+ | user | host | ssl_type | +---------+-------------+----------+ | airflow | 10.0.121.% | | | hive | 10.0.121.% | | | root | 10.0.121.% | | | airflow | 10.17.141.% | | | hive | 10.17.141.% | | | root | 10.17.141.% | | +---------+-------------+----------+ 6 rows in set (0.01 sec) 验证返回的每个用户的ssl_type是否等于ANY,X509或SPECIFIED。 配置方法 grant usage on airflow.* to 'airflow'@'10.0.121.%' require ssl;  

    SE_Ning 2024-03-11
    13 0 0
  • MySQL安全配置之认证

      1. 禁止在全局配置中存储密码 安全说明 MySQL配置文件的[client]部分允许设置要使用的用户和密码。在全局配置中使用密码参数可能会造成用户密码的泄漏。 检查方法 打开MySQL配置文件my.cnf,检查[client]部分,确保未使用密码。 配置方法 使用mysql_config_editor以加密形式在.mylogin.cnf中存储身份验证凭据。   2. 设置“sql_mode”包含“NO_AUTO_CREATE_USER” 安全说明 sql_mode模式有三种,STRICT_TRANS_TABLES是其中一种模式。当执行数据更新操作(如INSERT、UPDATE),MySQL依据是否启用严格的SQL_MODE处理非法与丢失的数据。NO_AUTO_CREATE_USER是sql_mode的一个选项,可以阻止grant语句在特定情况下自动创建用户,给数据库带来安全隐患。 检查方法 mysql> select @@global.sql_mode; +-----------------------------------------------------------------------------------------------------------------------+ | @@global.sql_mode | +-----------------------------------------------------------------------------------------------------------------------+ | ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION | +-----------------------------------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec) mysql> select @@session.sql_mode; +-----------------------------------------------------------------------------------------------------------------------+ | @@session.sql_mode ……

    SE_Ning 2024-03-08
    16 0 0
  • MySQL安全配置之审计和记录安全

      1. 启用错误日志“log_error” 安全说明 错误日志包含有关事件的信息,例如mysqld启动和停止,何时需要检查和修复表,以及mysqld失败时堆栈跟踪。启用错误日志可以提高检测针对mysql和其他关键消息的恶意尝试的能力,如果没有启用错误日志,那么连接错误可能会被忽略。 检查方法 mysql> show variables like 'log_error'; +---------------+-----------------------------+ | Variable_name | Value | +---------------+-----------------------------+ | log_error | /data/mysql/logs/mysqld.log | +---------------+-----------------------------+ 确保返回值不为空。 配置方法 打开MySQL配置文件my.cnf 将log-error选项设置为错误日志的路径。   2. 设置日志文件存储在非系统分区上 安全说明 MySQL日志文件可以在MySQL配置中设置,以存储在文件系统的任何位置。通常应将日志文件存放在非系统分区上。 检查方法 mysql> select @@global.log_bin_basename; +---------------------------+ | @@global.log_bin_basename | +---------------------------+ | /data/mysql/data/binlog | +---------------------------+ 确保返回的值不为root(‘/’)、/var或/usr。 配置方法 打开MySQL配置文件my.cnf 将log-bin选项设置为不在root(‘/’)、/var或/usr上的目录上。   3. 确保“log_error_verbosity”被设置为2或3 安全说明 log_error_verbosity系统变量决定MySQL日志中记录的内容。值为1表示仅记录错误消息,值为2表示记录错误和警告消息,值为3表示记录错误、警告和注释消息。随着级别的调整会记录更多信息,调整到2有助于通过日志追查安全问题。 检查方法 mysql> show global variables like 'log_error_verbosity'; +------------------……

    SE_Ning 2024-03-07
    13 0 0