mysql 自己总结的实用技巧.docx

上传人:b****1 文档编号:23171358 上传时间:2023-05-15 格式:DOCX 页数:21 大小:26.10KB
下载 相关 举报
mysql 自己总结的实用技巧.docx_第1页
第1页 / 共21页
mysql 自己总结的实用技巧.docx_第2页
第2页 / 共21页
mysql 自己总结的实用技巧.docx_第3页
第3页 / 共21页
mysql 自己总结的实用技巧.docx_第4页
第4页 / 共21页
mysql 自己总结的实用技巧.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

mysql 自己总结的实用技巧.docx

《mysql 自己总结的实用技巧.docx》由会员分享,可在线阅读,更多相关《mysql 自己总结的实用技巧.docx(21页珍藏版)》请在冰豆网上搜索。

mysql 自己总结的实用技巧.docx

mysql自己总结的实用技巧

1、安装mysql服务

cdmysql/bin(配置过环境变量的可以略过)

mysqld.exe–install(默认服务名称是mysql或者mysqld.exe–install“mysql5″修改服务名称)

删除mysql服务

mysqld.exe–remove(或者mysqld.exe–remove“mysql5″)

2、启动停止服务(必须是安装mysql为服务后)

a)在命令行启动/停止

netstartmysql

netstopmysql

b)或者去控制面板/管理中心/服务,找mysql启动

c)或者开始/运行输入services.msc,确定后,找到mysql启动

引擎

看你的mysql现在已提供什么存储引擎:

SHOWENGINES;

看你的mysql当前默认的存储引擎:

SHOWVARIABLESLIKE'%storage_engine%';

你要看某个表用了什么引擎(在显示结果里参数engine后面的就表示该表当前用的存储引擎):

SHOWCREATETABLEtablename;

如何修改MySQL数据库引擎

对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎。

如果你要使用全文索引,那必须使用MyISAM。

INNODB的实用性,安全性,稳定性更高但是效率比MyISAM稍差,但是有的功能是MyISAM没有的。

修改MySQL的引擎为INNODB,可以使用外键,事务等功能,性能高。

本文主要介绍如何修改MySQL数据库引擎为INNODB,接下来我们开始介绍。

对于MySQL数据库,如果你要使用事务以及行级锁就必须使用INNODB引擎。

如果你要使用全文索引,那必须使用MyISAM。

INNODB的实用性,安全性,稳定性更高但是效率比MyISAM稍差,但是有的功能是MyISAM没有的。

修改MySQL的引擎为INNODB,可以使用外键,事务等功能,性能高。

本文主要介绍如何修改MySQL数据库引擎为INNODB,接下来我们开始介绍。

首先修改my.ini,在[mysqld]下加上:

default-storage-engine=INNODB

其中的蓝色字体是要指定的数据库引擎名称。

用sql语句修改已经建成表的引擎:

alter table tableName type=InnoDB   --type语法在4.X版本下存在

alter table tableName ENGINE=InnoDB   --5.X下都改成engine=innodb

忘记mysqlroot密码处理办法:

1.关闭mysqld.exe进程

2.Win+R打开cmd.exe

3.运行mysql的bin目录下的mysqld-nt加参数--skip-grant-tables如下

mysqld-nt--skip-grant-tables

4.再打开个cmd.exemysql-uroot进入

5.修改root密码

切换数据库usemysql

修改user表updateusersetpassword=password(‘新密码’)whereuser=’root’;

刷新权限flushprivileges;

退出quit;

6.进入任务管理器关闭mysqld-nt进程

7.从新打开mysqld.exe(可以在任务管理器中新建mysqld.exe)

8.Mysql-uroot-p回车输入密码进入

MySqlHostisblockedbecauseofmanyconnectionerrors;unblockwith'mysqladminflush-hosts'解决方法

环境:

linux,mysql5.5.21

错误:

Hostisblockedbecauseofmanyconnectionerrors;unblockwith'mysqladminflush-hosts'

原因:

  同一个ip在短时间内产生太多(超过mysql数据库max_connection_errors的最大值)中断的数据库连接而导致的阻塞;

解决方法:

1、提高允许的max_connection_errors数量(治标不治本):

  ①进入Mysql数据库查看max_connection_errors:

 showvariableslike'%max_connection_errors%';

   ②修改max_connection_errors的数量为1000:

 setglobalmax_connect_errors=1000;

  ③查看是否修改成功:

showvariableslike'%max_connection_errors%';

2、使用mysqladminflush-hosts 命令清理一下hosts文件(不知道mysqladmin在哪个目录下可以使用命令查找:

whereismysqladmin);

  ①在查找到的目录下使用命令修改:

/usr/bin/mysqladminflush-hosts-h192.168.1.1 -P3308 -uroot -prootpwd;

  备注:

    其中端口号,用户名,密码都可以根据需要来添加和修改;

    配置有master/slave主从数据库的要把主库和从库都修改一遍的(我就吃了这个亏明明很容易的几条命令结果折腾了大半天);

    第二步也可以在数据库中进行,命令如下:

flushhosts;

编码

MySQL的默认编码是Latin1,不支持中文,要支持中午需要把数据库的默认编码修改为gbk或者utf8。

1、需要以root用户身份登陆才可以查看数据库编码方式(以root用户身份登陆的命令为:

>mysql -uroot–p,之后两次输入root用户的密码),查看数据库的编码方式命令为:

 >showvariableslike'character%';

+--------------------------+----------------------------+

|Variable_name|Value|

+--------------------------+----------------------------+

|character_set_client|latin1|

|character_set_connection|latin1|

|character_set_database|latin1|

|character_set_filesystem|binary|

|character_set_results|latin1|

|character_set_server|latin1|

|character_set_system|utf8|

|character_sets_dir|/usr/share/mysql/charsets/|

+--------------------------+----------------------------+

从以上信息可知数据库的编码为latin1,需要修改为gbk或者是utf8;

其中,character_set_client为客户端编码方式;character_set_connection为建立连接使用的编码;character_set_database数据库的编码;

character_set_results结果集的编码;

character_set_server数据库服务器的编码;

只要保证以上四个采用的编码方式一样,就不会出现乱码问题。

另一个查看数据库编码的命令:

>showvariableslike‘collation%’;

 

2、linux系统下,修改MySQL数据库默认编码的步骤为:

ü        停止MySQL的运行

/etc/init.d/mysqlstart(stop)为启动和停止服务器

ü        MySQL主配置文件为f,一般目录为/etc/mysql

var/lib/mysql/放置的是数据库表文件夹,这里的mysql相当于windows下mysql的date文件夹

ü        当我们需要修改MySQL数据库的默认编码时,需要编辑f文件进行编码修改,在linux下修改mysql的配置文件f,文件位置默认/etc/f文件

找到客户端配置[client]在下面添加

default-character-set=utf8默认字符集为utf8

在找到[mysqld]添加

default-character-set=utf8默认字符集为utf8

init_connect='SETNAMESutf8'(设定连接mysql数据库时使用utf8编码,以让mysql数据库为utf8运行)

修改好后,重新启动mysql即可,重新查询数据库编码可发现编码方式的改变:

>showvariableslike'character%';

+--------------------------+----------------------------+

|Variable_name|Value|

+--------------------------+----------------------------+

|character_set_client|utf8|

|character_set_connection|utf8|

|character_set_database|utf8|

|character_set_filesystem|binary|

|character_set_results|utf8|

|character_set_server|utf8|

|character_set_system|utf8|

|character_sets_dir|/usr/share/mysql/charsets/|

+--------------------------+----------------------------+

此方法用于标准mysql版本同样有效,对于/etc/f文件,需要从mysql/support-files的文件夹cpmy-f一份到/etc/f

 

3、windows系统下可以删除MySQL数据库,并重新安装,在安装过程中可以直接用MysqlServerInstanceConfigWizard进行设置

 

4、当MySQL数据库服务器已经有数据不适合删除重装时,可以个别指定数据库的编码方式。

MySQL指定编码的方式是非常灵活并多样化的,可以指定表级别的编码,行级别编码,甚至可以指定字段级别的编码。

以下示例给出创建数据库时指定编码的两种方式:

1)CREATE DATABASE ms_db CHARACTERSET utf8 COLLATE utf8_general_ci;

2)create database if not exists netctoss defaultcharactersetutf8;

5、如果你采用的是外部接入的方式,可以在连接中确定请求的编码格式如:

jdbc:

mysql:

//localhost:

3306/mysql?

useUnicode=true&characterEncoding=utf-8(注意:

不要出现任何空格,否则出错)

6、执行脚本:

指定编码格式setnamesgbk(注意,不是UTF-8)可以修改

执行前:

执行后:

从执行命令前后可知,setnamesgbk只可以修改character_set_client、character_set_connection、character_set_results的编码方式,并且这种修改是窗口级别的,只针对本窗口有效,打开另外一个窗口修改无效。

也可发现数据库底层的编码方式没有改变,插入数据后还是以utf8编码方式保持。

 

基本操作

1、连接Mysql

格式:

mysql-h主机地址-u用户名-p用户密码

1、连接到本机上的MYSQL。

首先打开DOS窗口,然后进入目录mysql\bin,再键入命令mysql-uroot-p,回车后提示你输密码.注意用户名前可以有空格也可以没有空格,但是密码前必须没有空格,否则让你重新输入密码。

如果刚安装好MYSQL,超级用户root是没有密码的,故直接回车即可进入到MYSQL中了,MYSQL的提示符是:

mysql>

2、连接到远程主机上的MYSQL。

假设远程主机的IP为:

110.110.110.110,用户名为root,密码为abcd123。

则键入以下命令:

mysql-h110.110.110.110-uroot-p123;(注:

u与root之间可以不用加空格,其它也一样)

3、退出MYSQL命令:

exit/quit(回车)

2、修改密码

格式:

mysqladmin-u用户名-p旧密码password新密码

1、给root加个密码ab12。

首先在DOS下进入目录mysql\bin,然后键入以下命令

mysqladmin-uroot-p-passwordab12

或mysql>SETPASSWORDFOR'root'@'localhost'=PASSWORD('newpass');

方法3:

用UPDATE直接编辑user表

  mysql-uroot

  mysql>usemysql;

  mysql>UPDATEuserSETPassword=PASSWORD('newpass')WHEREuser='root';

  mysql>FLUSHPRIVILEGES;

注:

因为开始时root没有密码,所以-p旧密码一项就可以省略了。

2、再将root的密码改为djg345。

mysqladmin-uroot-pab12passworddjg345

3、增加新用户

注意:

和上面不同,下面的因为是MYSQL环境中的命令,所以后面都带一个分号作为命令结束符

格式:

grantselecton数据库.*to用户名@登录主机identifiedby“密码”

(@%)对所有的机器,

1、增加一个用户test1密码为abc,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。

首先用root用户连入MYSQL,然后键入以下命令:

grantselect,insert,update,deleteon*.*to[email=test1@”%]test1@”%[/email]”Identifiedby“abc”;

但增加的用户是十分危险的,你想如某个人知道test1的密码,那么他就可以在internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了,解决办法见2。

2、增加一个用户test2密码为abc,让他只可以在localhost上登录,并可以对数据库mydb进行查询、插入、修改、删除的操作(localhost指本地主机,即MYSQL数据库所在的那台主机),这样用户即使用知道test2的密码,他也无法从internet上直接访问数据库,只能通过MYSQL主机上的web页来访问了。

grantselect,insert,update,deleteonmydb.*to[email=test2@localhost]test2@localhost[/email]identifiedby“abc”;

如果你不想test2有密码,可以再打一个命令将密码消掉。

grantselect,insert,update,deleteonmydb.*to[email=test2@localhost]test2@localhost[/email]identifiedby“”;

4.1创建数据库

注意:

创建数据库之前要先连接Mysql服务器

命令:

createdatabase<数据库名>

例1:

建立一个名为xhkdb的数据库

mysql>createdatabasexhkdb;

例2:

创建数据库并分配用户

①CREATEDATABASE数据库名;

②GRANTSELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTERON数据库名.*TO数据库名@localhostIDENTIFIEDBY'密码';

③SETPASSWORDFOR'数据库名'@'localhost'=OLD_PASSWORD('密码');

依次执行3个命令完成数据库创建。

注意:

中文“密码”和“数据库”是户自己需要设置的。

4.2显示数据库

命令:

showdatabases(注意:

最后有个s)

mysql>showdatabases;

注意:

为了不再显示的时候乱码,要修改数据库默认编码。

以下以GBK编码页面为例进行说明:

1、修改MYSQL的配置文件:

my.ini里面修改default-character-set=gbk

2、代码运行时修改:

①Java代码:

jdbc:

mysql:

//localhost:

3306/test?

useUnicode=true&characterEncoding=gbk

②PHP代码:

header("Content-Type:

text/html;charset=gb2312");

③C语言代码:

intmysql_set_character_set(MYSQL*mysql,char*csname);

该函数用于为当前连接设置默认的字符集。

字符串csname指定了1个有效的字符集名称。

连接校对成为字符集的默认校对。

该函数的工作方式与SETNAMES语句类似,但它还能设置mysql->charset的值,从而影响了由mysql_real_escape_string()设置的字符集。

4.3删除数据库

命令:

dropdatabase<数据库名>

例如:

删除名为xhkdb的数据库

mysql>dropdatabasexhkdb;

例子1:

删除一个已经确定存在的数据库

mysql>dropdatabasedrop_database;

QueryOK,0rowsaffected(0.00sec)

例子2:

删除一个不确定存在的数据库

mysql>dropdatabasedrop_database;

ERROR1008(HY000):

Can'tdropdatabase'drop_database';databasedoesn'texist

//发生错误,不能删除'drop_database'数据库,该数据库不存在。

mysql>dropdatabaseifexistsdrop_database;

QueryOK,0rowsaffected,1warning(0.00sec)//产生一个警告说明此数据库不存在

mysql>createdatabasedrop_database;

QueryOK,1rowaffected(0.00sec)

mysql>dropdatabaseifexistsdrop_database;//ifexists判断数据库是否存在,不存在也不产生错误

QueryOK,0rowsaffected(0.00sec)

4.4连接数据库

命令:

use<数据库名>

例如:

如果xhkdb数据库存在,尝试存取它:

mysql>usexhkdb;

屏幕提示:

Databasechanged

use语句可以通告MySQL把db_name数据库作为默认(当前)数据库使用,用于后续语句。

该数据库保持为默认数据库,直到语段的结尾,或者直到发布一个不同的USE语句:

mysql>USEdb1;

mysql>SELECTCOUNT(*)FROMmytable;#selectsfromdb1.mytable

mysql>USEdb2;

mysql>SELECTCOUNT(*)FROMmytable;#selectsfromdb2.mytable

使用USE语句为一个特定的当前的数据库做标记,不会阻碍您访问其它数据库中的表。

下面的例子可以从db1数据库访问作者表,并从db2数据库访问编辑表:

mysql>USEdb1;

mysql>SELECTauthor_name,editor_nameFROMauthor,db2.editor

->WHEREauthor.editor_id=db2.editor.editor_id;

USE语句被设立出来,用于与Sybase相兼容。

有些网友问到,连接以后怎么退出。

其实,不用退出来,use数据库后,使用showdatabases就能查询所有数据库,如果想跳到其他数据库,用

use其他数据库名字

就可以了。

4.5当前选择的数据库

命令:

mysql>selectdatabase();

MySQL中SELECT命令类似于其他编程语言里的print或者write,你可以用它来显示一个字符串、数字、数学表达式的结果等等。

如何使用MySQL中SELECT命令的特殊功能?

1.显示MYSQL的版本

mysql>selectversion();

+-----------------------+

|version()|

+-----------------------+

|6.0.4-alpha-community|

+-----------------------+

1rowinset(0.02sec)

2.显示当前时间

mysql>selectnow();

+---------------------+

|now()|

+---------------------+

|2009-09-1522:

35:

32|

+---------------------+

1rowinset(0.04sec)

3.显示年月日

SELECTDAYOFMONTH(CURRENT_DATE);

+--------------------------+

|DAYOFMONTH(CURRENT_DATE)|

+--------------------------+

|15|

+--------------------------+

1rowinset(0.01sec)

SELECTMONTH(CURRENT_DATE);

+--------------

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 法语学习

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1