搜索

MySQL使用随笔

Jun 07, 2016 pm 03:33 PM
mysql使用查看版本

001 查看版本 mysql --version mysql select version(); mysql status; 002 新建MySQL用户、授权 insert into mysql.user(Host,User,Password) values(localhost,username,password(yourpassword)); GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost'

001 查看版本

mysql --version
mysql > select version();
mysql > status;

002 新建MySQL用户、授权

insert into mysql.user(Host,User,Password) values("localhost","username",password("yourpassword"));

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' IDENTIFIED BY "yourpassword" WITH GRANT OPTION; 

flush privileges;

003. 查询支持的存储引擎
show engines;

004 查看变量
show variables like 'innodb%';

005 导入数据库(sql文件)
mysql -uroot -p dbname
006 my.cnf说明
[client] #客户端配置
port                              = 3306
socket                         = /var/lib/mysql/mysql.sock #本地客户端使用这个socket链接mysqld
default_character_set   = utf8
secure_auth                    = 0                         #跳过密码格式不统一问题                 

[mysqld]
datadir=/usr/local/mysql/data        #指定数据路径
socket=/var/lib/mysql/mysql.sock #使用这个socket启动server
user=mysql
old_passwords = 1
secure_auth = 0
innodb_force_recovery=0          #必须为0,否则innodb就是read only模式
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

007 修改root密码
mysqld_safe --skip-grant-tables
mysql > update mysql.user set password=password("new_pass") where user="root";

008 让mysql服务器输出所有执行的SQL语句记录

mysqld --general-log=TRUE

日志输出为mysql服务器数据目录的localhost.log, 其他日志请执行mysqld --verbose --help查看

009 数据库导出导入

导出数据
mysqldump -uusername -ppassword databasename > databasename.sql
导出存储过程和函数
mysqldump -uusername -ppassword -ntd -R databasename > stored-procs.sql
只导出表结构
mysqldump -uusername -ppassword -d --add-drop-table databasename > table-init.sql
导入sql文件(可以为数据,表结构,存储过程...)
mysql -uusername -ppassword databasename

010 查看当前哪些线程在运行

mysql >show processlist;

MySQL使用随笔

在Info字段还可以查看执行的语句,如果有执行很慢的语句,可以直接查询到。

011 删除表记录

DELETE FROM tablename

TRUNCATE TABLE tablename

012 mysql存储过程的sql secuirty
mysql存储过程中sql secuirty决定了执行相关存储过程时的安全限制,sql secuirty可以为DEFINER或者INVOKER。
DEFINER表示执行此存储过程的用户必须是存储过程创建者且必须存在这个用户并有对应权限。
INVOKER表示执行此存储过程的用户必须是存在的用户且这个用户并有对应权限。

创建存储过程时,可以指定sql secuirty,以下例子指定sql secuirty为INVOKER。
CREATE DEFINER = 'admin'@'localhost' PROCEDURE account_count()
SQL SECURITY INVOKER
BEGIN
  SELECT 'Number of accounts:', COUNT(*) FROM mysql.user;
END;

也可以通过修改mysql.proc表中对应字段security_type来设定sql secuirty。例
update mysql.proc set security_type = ...

alter procedure pro_name sql security invoker;

013 数据表增加字段(时间字段)

mysql> alter table mytable add column ctime datetime DEFAULT NOW() NOT NULL after flag;  
Query OK, 0 rows affected (0.26 sec)
Records: 0  Duplicates: 0  Warnings: 0

014 左、右join

语法:

SELECT * FROM tableA
LEFT|RIGHT JOIN tableB
ON tableA.field1 = tableB.field2
左JOIN:以左(tableA)表为基础查出所有符合条件的tableA和tableB,tableB不存在的记录显示tableB相关字段为NULL;

右JOIN:以右(tableB)表为基础查出所有符合条件的tableA和tableB,tableA不存在的记录显示tableA相关字段为NULL;

015 修改列定义,定义索引

ALTER TABLE table_name modify column_name varchar(32);
ALTER TABLE table_name ADD INDEX `column_name` (`column_name`);

016 make mysql

http://dev.mysql.com/doc/internals/en/cmake-build-options-official-mysql.html

  • Unix (Makefiles)

    mkdir bld
    cd bld
    cmake .. -DBUILD_CONFIG=mysql_release
    make
    

注:安装libaio后如果还是提示依赖,重新执行上面步骤(删除bld)

017 mysql升级后无法赋用户权限,修正

2014-05-27 14:48:34 17291 [ERROR] Missing system table mysql.proxies_priv; please run mysql_upgrade to create it
2014-05-27 14:48:34 17291 [Warning] Info table is not ready to be used. Table 'mysql.slave_master_info' cannot be opened.
2014-05-27 14:48:34 17291 [Warning] Info table is not ready to be used. Table 'mysql.slave_relay_log_info' cannot be opened.
2014-05-27 14:48:34 17291 [ERROR] Native table 'performance_schema'.'cond_instances' has the wrong structure
2014-05-27 14:48:34 17291 [ERROR] Native table 'performance_schema'.'events_waits_current' has the wrong structure
2014-05-27 14:48:34 17291 [ERROR] Native table 'performance_schema'.'events_waits_history' has the wrong structure
2014-05-27 14:48:34 17291 [ERROR] Native table 'performance_schema'.'events_waits_history_long' has the wrong structure
2014-05-27 14:48:34 17291 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_host_by_event_name' has the wrong structure
2014-05-27 14:48:34 17291 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_instance' has the wrong structure
2014-05-27 14:48:34 17291 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_thread_by_event_name' has the wrong structure
2014-05-27 14:48:34 17291 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_user_by_event_name' has the wrong structure
2014-05-27 14:48:34 17291 [ERROR] Native table 'performance_schema'.'events_waits_summary_by_account_by_event_name' has the wrong structure

解决办法:
mysql_upgrade -u root -p


018  sql_mode doesn't have a default value null 

现象是无法导入存储过程,提示如题所示的错误,解决办法,修改配置文件中sql_mode,注释掉重新启动MySQL

#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 

如果发现执行存储过程时有默认值的情况仍旧无法插入数据,也可能是这个原因,这时要直接修改mysql.proc表中对应存储过程的sql_mode为NO_ENGINE_SUBSTITUTION即可

详细信息查看这里

也可以直接连接到mysql执行source /path/to/sql_file.sql


019 MySQL安装后没有mysql数据库

运行安装目录中的./scripts/mysql_install_db

020 mysql连接localhost

安装mysql后,只能使用localhost作为host连接,无法使用其他远程主机连接,纠结许久(防火墙好像没有限制啊!),发现mysqld是以13306端口启动的,但应用server的数据库配置中写的是3306,仍然连接成功。为什么?

原因是mysql连接localhost使用的是socket文件,而不是tcp连接,因此指定端口是无效的。如下所示的13306端口会被忽略

shell> <strong><code>mysql --port=13306 --host=localhost</code></strong>
如果需要使用TCP连接,则需要指定--host为不同于localhost,或指定以TCP方式连接。
shell> <strong><code>mysql --port=13306 --host=127.0.0.1</code></strong>
shell> <strong><code>mysql --port=13306 --protocol=TCP</code></strong>

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
MySQL如何处理数据复制?MySQL如何处理数据复制?Apr 28, 2025 am 12:25 AM

MySQL通过异步、半同步和组复制三种模式处理数据复制。1)异步复制性能高但可能丢失数据。2)半同步复制提高数据安全性但增加延迟。3)组复制支持多主复制和故障转移,适用于高可用性需求。

您如何使用解释性语句分析查询性能?您如何使用解释性语句分析查询性能?Apr 28, 2025 am 12:24 AM

EXPLAIN语句可用于分析和提升SQL查询性能。1.执行EXPLAIN语句查看查询计划。2.分析输出结果,关注访问类型、索引使用情况和JOIN顺序。3.根据分析结果,创建或调整索引,优化JOIN操作,避免全表扫描,以提升查询效率。

您如何备份并还原MySQL数据库?您如何备份并还原MySQL数据库?Apr 28, 2025 am 12:23 AM

使用mysqldump进行逻辑备份和MySQLEnterpriseBackup进行热备份是备份MySQL数据库的有效方法。1.使用mysqldump备份数据库:mysqldump-uroot-pmydatabase>mydatabase_backup.sql。2.使用MySQLEnterpriseBackup进行热备份:mysqlbackup--user=root--password=password--backup-dir=/path/to/backupbackup。恢复时,使用相应的命

MySQL中慢速查询的常见原因是什么?MySQL中慢速查询的常见原因是什么?Apr 28, 2025 am 12:18 AM

MySQL慢查询的主要原因包括索引缺失或不当使用、查询复杂度、数据量过大和硬件资源不足。优化建议包括:1.创建合适的索引;2.优化查询语句;3.使用分表分区技术;4.适当升级硬件。

MySQL中有什么看法?MySQL中有什么看法?Apr 28, 2025 am 12:04 AM

MySQL视图是基于SQL查询结果的虚拟表,不存储数据。1)视图简化复杂查询,2)增强数据安全性,3)维护数据一致性。视图是数据库中的存储查询,可像表一样使用,但数据动态生成。

MySQL和其他SQL方言之间的语法有什么区别?MySQL和其他SQL方言之间的语法有什么区别?Apr 27, 2025 am 12:26 AM

mysqldiffersfromothersqldialectsinsyntaxforlimit,自动启动,弦乐范围,子征服和表面上分析。1)MySqluessLipslimit,whilesqlserverusestopopandoraclesrontersrontsrontsrontsronnum.2)

什么是mysql分区?什么是mysql分区?Apr 27, 2025 am 12:23 AM

MySQL分区能提升性能和简化维护。1)通过按特定标准(如日期范围)将大表分成小块,2)物理上将数据分成独立文件,3)查询时MySQL可专注于相关分区,4)查询优化器可跳过不相关分区,5)选择合适的分区策略并定期维护是关键。

您如何在MySQL中授予和撤销特权?您如何在MySQL中授予和撤销特权?Apr 27, 2025 am 12:21 AM

在MySQL中,如何授予和撤销权限?1.使用GRANT语句授予权限,如GRANTALLPRIVILEGESONdatabase_name.TO'username'@'host';2.使用REVOKE语句撤销权限,如REVOKEALLPRIVILEGESONdatabase_name.FROM'username'@'host',确保及时沟通权限变更。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器