`
brandNewUser
  • 浏览: 455421 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

这段时间使用MySQL的一些记录

阅读更多

自从Fedora19之后,Linux上的MySQL就被MariaDB所取代,这段文字见如下引用:

 

MySQL was replaced by MariaDB since Fedora 19 (http://fedoraproject.org/wiki/Features/ReplaceMySQLwithMariaDB).

To install MariaDB Server you have to execute the following command:

yum install mariadb mariadb-server

To start MariaDB on Fedora 20, execute the following command:

systemctl start mariadb.service

To autostart MariaDB on Fedora 20, execute the following command:

systemctl enable mariadb.service

After you started MariaDB (do this only once), execute the following command:

/usr/bin/mysql_secure_installation

This command will ask you some inputs to set root password, remove anonymous users, disallow root login remotely, remove test database and reload privilege tables.

 

 

基本安装和启动

 

 

从上面的信息可以看出,基本上通过yum install安装的MariaDB,命令与MySQL相关命令基本差不多。

 

我们可以通过命令行连接MariaDB:

 

mysql -u 用户名 -h 地址 -p,输入密码即可

show databases 显示出所有mysql中的数据库;

show tables;

 

也可以在Mac下使用客户端,这里推荐一个比较好用的客户端(仅Mac下):Sequel Pro

 

如果新建的数据表都是GBK(或latin,有些某人配置为latin的),通过下面的命令可以修改其字符集为"UTF-8":

 

ALTER DATABASE diablo DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

 

创建用户,以及分配对应权限的命令格式如下:

 

CREATE USER username IDENTIFIED BY 'password';
CREATE DATABASE databasename;
CREATE DATABASE IF NOT EXISTS yourdbname DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
GRANT ALL ON databasename.* TO 'username'@‘%';
flush privileges;

 

使用组合mysqldump以及mysql命令,可以一次性地将数据进行备份
mysqldump db_test -u root -ppassword --add-drop-table | mysql db_for_test -u root -ppassword
 
以上是在同一台MySQL服务器上复制数据库的方法。如果要复制到远程另一台MySQL服务器上,可以使用mysql的“ -h 主机名/ip”参数。前提是mysql允许远程连接,且远程复制的传输效率和时间可以接受。
 
#mysqldump db1 -uroot -ppassword --add-drop-table | mysql -h 192.168.1.22 newdb -uroot -ppassword 
 

Linux启动和停止Mysql服务

 

 

采用netstat -nlp查看mysql服务的状态

 

命令行方式:

        开启  ./mysqld_safe &
        关闭  mysqladmin -uroot shutdown

 

rpm方式安装的:

        开启  service mysql start
        关闭  service mysql stop

 

在命令行启动mysql时,如不加"--console",启动、关闭信息不在界面中显示,而是记录在安装目录下的data目录里,文件名一般是hostname.err,通过此文件查看mysql的控制台信息。
 

使用MySQL处理表连接时的错误

 
使用inner join两张数据库表时,出现连接错误:
 
select * from campaign_message m inner join spread_student s on m.phone=s.phone;


Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '='
在StackOverFlow网站上,查看其出现的问题:
 
 
标题为:Illegal mix of collations (utf8_general_ci,IMPLICIT) and (utf8_unicode_ci,IMPLICIT) for operation '=' in MySQL Stored Procedure。
 
某些人给出的答案为:
 

so the answer is simple. It seems you missed the change as stated by MKJ ^^ but the actual syntax to alter your tables looks like this.

alter table `dbname`.`tablename` convert to character set utf8 collate utf8_general_ci;


 
Applied as an individual script or at the end of your create table statement you should be able to relate all related tables back to the same charset
 
 
执行语句完成后,就可以使得两张数据表能够正常执行连接了。
 
之前出现的问题就是,有一张数据表声明的时候没有按照正常的character set,而是采用了其他的字符集。 

MySQL处理表锁死的状态

 
同事在处理mysql查询的时候,遇到问题,针对其中的某张表查询不能正常执行(甚至于最简单的select也不行),而其他表查询都可以。
 
从网上找到的一些资料,可以通过命令行的方式查找到具体线程:
 
SHOW PROCESSLIST显示哪些线程正在运行。您也可以使用mysqladmin processlist语句得到此信息。如果您有SUPER权限,您可以看到所有线程。否则,您只能看到您自己的线程(也就是,与您正在使用的MySQL账户相关的线程)。如果有线程在update或者insert 某个表,此时进程的status为updating 或者 sending data。
 
如果您得到“too many connections”错误信息,并且想要了解正在发生的情况,本语句是非常有用的。MySQL保留一个额外的连接,让拥有SUPER权限的账户使用,以确保管理员能够随时连接和检查系统(假设您没有把此权限给予所有的用户)。
 
下面就是我们执行了该命令出现的表结构:
 


 
 
其中的state显示出了等待的一些基本锁,以及这些锁的基本状态。
 

其中的第一个字段为线程id,可以对线程id执行kill操作,手动执行所有需要被kill掉的线程,就可以保证在查询过程中不会出现死锁问题。 

 

 

  • 大小: 159.9 KB
分享到:
评论

相关推荐

    MySql 按时间段查询数据方法(实例说明)

    本文将详细说明如何使用MySQL进行按时间段查询数据的方法,包括操作示例和说明。 首先,我们必须了解MySQL中处理时间数据的函数。例如,`curdate()` 函数用于获取当前日期,而 `month()` 函数可以提取日期或时间...

    MYSQL时间处理(全)

    例如,统计过去一段时间内某个表中的记录数量,并按小时或天进行分组: 1. **按小时分组统计:** - 统计过去24小时内`t_asset_check_result_bak`表中的记录数量: ```sql SELECT CONCAT(DATE_FORMAT(model....

    MySQL数据表添加字段

    这通常发生在数据需求发生变化或者需要记录更多相关信息时。本篇文章将详细探讨如何在MySQL中添加字段,以及涉及的相关知识点。 首先,我们需要理解一个完整的字段定义包含的三个基本要素: 1. **字段名**:字段名...

    mysql server 5.1参考手册

    通过深入学习这本参考手册,MySQL管理员和开发者可以熟练掌握MySQL Server 5.1的核心功能,并能够有效地设计、管理及优化数据库系统。"refman-5.1-zh.html-chapter"这个文件很可能是手册的HTML章节,方便在线阅读和...

    使用Between查询时间段.rar

    本篇文章将深入探讨如何使用`BETWEEN`来查询时间段。 一、`BETWEEN`的基本语法 `BETWEEN`的关键字语法如下: ```sql SELECT column_name(s) FROM table_name WHERE column_name BETWEEN value1 AND value2; ``` ...

    mysql第三阶段

    在这个阶段,我们将重点讨论如何创建数据表、应用约束、插入和查找记录,以及各种类型的约束,特别是外键约束。 数据类型是数据库设计的基础,包括整型(如TINYINT、INT、BIGINT)、浮点型(如FLOAT、DOUBLE)、...

    从根儿上理解MySQL

    在阅读本书时,作者建议读者投入一段完整的时间进行系统学习,避免碎片化的阅读方式,因为书中的章节之间存在紧密的依赖关系。每篇文章内容较长,包含了许多相互关联的概念,跳过或不按顺序阅读可能会导致理解困难。...

    C++访问MySQL

    总结来说,这段代码演示了如何在C++环境中使用MySQL C API连接到MySQL数据库,执行查询,处理结果集,并正确地管理内存。这展示了基本的数据库操作流程,对于理解C++与数据库交互的原理很有帮助。

    c#连接MYSQL数据库

    这段代码会删除`logs`表中3小时前的所有记录。根据你的具体需求,你可以调整`deleteQuery`中的SQL语句以满足不同的清理逻辑。 总之,通过使用C#和MySQL的数据提供程序,我们可以轻松地连接到MySQL数据库并执行各种...

    mapreduce解析网络日志文件(或从mysql数据库获取记录)并计算相邻日志记录间隔时长

    本话题主要探讨如何利用MapReduce解析网络日志文件,或者从MySQL数据库中获取记录,并计算相邻日志记录之间的间隔时长。这涉及到多个技术点,包括日志文件的处理、MapReduce的工作原理以及与关系型数据库如MySQL的...

    mysql 千万数据表 t_order.zip

    例如,可按时间进行范围分区,将订单数据分散到不同的时间段。分表则是将一个大表物理拆分成多个小表,常见的有垂直分表(按字段划分)和水平分表(按行划分)。 四、SQL优化 优化SQL语句是提升数据库性能的有效...

    实战演练MySQL被误删的表、库恢复 将数据库恢复到指定的时间点

    ### 实战演练MySQL被误删的表、库恢复 将数据库恢复到指定的时间点 在实际操作中,数据库管理员(DBA)经常会遇到误删表或数据库的情况,这对于业务来说可能是灾难性的。本文将详细介绍如何在MySQL环境中进行误删表...

    Mysql数据库文档生成工具(含使用说明)

    总的来说,MySQL数据库文档生成工具是一个强大的辅助工具,它能有效地减少手动编写文档的时间和错误,提高工作效率。正确配置和使用这类工具,可以帮助我们在项目管理中保持数据库设计的整洁和一致性,对于大型项目...

    MySql查询时间段的方法

    MySQL是广泛使用的开源关系型数据库管理系统,其在处理时间相关的查询时提供了多种方法。本篇文章将重点探讨在MySQL中如何有效地查询时间段,特别是针对日期和时间字段的查询技巧。 首先,MySQL中的时间字段类型...

    sql时间段查询

    ### SQL 时间段查询详解 #### 一、概述 在处理具有日期时间字段的数据时,我们经常需要筛选出特定时间段内的数据。例如,在本案例中,需要获取某表中7月1日至7月31日之间晚上10点到早上6点的数据。这种查询涉及到...

    MySql优化.pdf

    MySQL自带的慢查询日志(slow query log)是进行优化的重要工具之一,它记录了执行时间超过预设阈值的SQL语句。默认情况下,当一个查询超过10秒时,MySQL会将该查询写入慢查询日志。要启用这个功能,你需要在MySQL的...

    mysql 获取规定时间段内的统计数据

    这段SQL语句用于统计2017年内的每天订单数量。`WHERE`子句筛选出创建时间在2017年的记录,然后`GROUP BY`按照格式化后的日期分组,`COUNT(*)`计算每个日期的订单数量。 2. **按月统计**: ```sql SELECT COUNT(*...

    spotlight_on_mysql.zip

    5. **历史数据分析**:工具提供性能数据的历史记录,DBA可以对比不同时间段的数据库性能,找出性能波动的原因,为未来规划提供参考。 6. **报告生成**:Spotlight on MySQL可以自动生成详尽的性能报告,这些报告...

    mysql数据操作和mysql授权操作

    MySQL的权限系统允许精细的控制,包括针对特定表、列,甚至特定操作时间的权限设定。 总的来说,MySQL的数据操作和授权管理是数据库管理员和开发者的必备技能,理解并熟练掌握这些概念对于有效管理和保护数据库至关...

    深入浅出MySQL-读书笔记byCZF

    MySQL是目前流行和广泛使用的开源关系型数据库管理系统,它在性能上有着出色的表现,成为众多开发者和企业的首选。在MySQL数据库的使用过程中,有多个关键的知识点需要掌握,以保障数据库的高效稳定运行。 首先,...

Global site tag (gtag.js) - Google Analytics