Just 做 IT

求知若饥 虚心若愚 안년하세요 (•‾̑⌣‾̑•)

MySQL常用操作

3 years ago 0

登陆:


mysql -uroot -p u表示用户,p表示密码

show variables like 'character\_set\_%';
latin1_bin 
西欧 (多语言), 二进制 
binary 
二进制 

1.查看和清除mysql日志
如果想要关闭二进制mysql日志,可以在my.ini里把log-bin这行注释掉
要清二进制日志的话,在mysql开启了二进制日志的状态下,以root身份登录mysql以后执行下面两个命令之一:


PURGE MASTER LOGS before '2020-1-1';        清除指定日期之前的二进制日志
PURGE MASTER LOGS TO 'mysql-bin.010';        清除指定文件编号之前的二进制日志

注意,如果没运行命令而是直接删除mysql-bin.xxx文件的话,mysql-bin.index里仍然记录了日志文件列表,这样以后再清日志时,就会因找不到列表中的日志文件而无法清理mysql日志
可以用bin目录中的mysqlbinlog.exe查看mysql二进制日志。

C:\>mysqlbinlog mysql-bin.000001
如果my.ini中设置了字符集的话,可能会出现这以下这样的报错
mysqlbinlog: unknown variable 'default-character-set=gbk'
带上--no-defaults参数后即可解决

C:\>mysqlbinlog --no-defaults mysql-bin.000001
如果是要清理*.err日志的话,直接停止mysql数据库,将这个文件剪切走或者删除,重启mysql生成一个新的即可。
.err文件中实际是以文本方式保存的错误提示,可以直接用记事本打开查看。

2.清空某个mysql表中所有内容


delete from 表名;
truncate table 表名;
不带where参数的delete语句可以删除mysql表中所有内容,使用truncate table也可以清空mysql表中所有内容。效率上truncate比delete快,但truncate删除后不记录mysql日志,不可以恢复数据。
delete的效果有点像将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表。

3.查看编码

查看数据库的字符集    show variables like 'character\_set\_%';
latin1_bin 
西欧 (多语言), 二进制 
 
binary 
二进制 
mysql>create database mydb character set utf-8;#直接指定其编码
直接通过命令进行修改
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
set character_set_server=utf8;
修改完了之后再查询
show variables like 'character\_set\_%';
+--------------------------+--------+
| 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   |
+--------------------------+--------+
结果全部都调整修改成UTF-8了!
MySQL字符集编码的类型种类
gb2312_chinese_ci和gbk_chinese_ci以及gb2312_bin,gbk_bin的区别
gb2312_chinese_CI : 只支持简体中文
gb2312_BIN   :而gb2312_bin可以说是gb2312_chinese_ci的一个子集,
而且gb2312_BIN是二进制存储.区分大小写数据库编码格式就意义不一样了
gbk_chinese_CI   支持简体中文和繁体
gbk_bin   解释同gb2312_BIN     对应gbk_chinese_CI
PS:GBK包括了简体与繁体两种类型
查看数据库表中字段的字符集设置-----------show create table TableName 或 show full columns from tableName
查看数据库的编码格式---------------------show create database test;
修改数据库的字符集
   mysql>use mydb
   mysql>alter database mydb character set utf-8;

4、mysqldump导出mysql备份:注意的是mysqldump在mysql的bin目录执行才可以(windows)语法:

mysqldump -uroot -p database_name table_name > c:\table.sql;
导入命令用source,source命令在mysql的提示符下才可以执行。
在mysqldump时可以指定其字符集,用--default-character-set=gbk
-d(--no-data),表示只导出表结构,
-t,说明只导出表数据,不到表结构;如果不加-d或者-t,默认导出表结构和表数据


如果表的主键是自动增长型(AUTO_INCREMENT),在插入数据时,如果出现异常,表中
AUTO_INCREMENT的值就会变一个很大的值,和你设置的这个类型的位数一样宽,这些在插入时不报错,
只有在读出时用才会发现;由于这些数据实际上是无效的,所以必须删掉这些数据,然后
修改表结构(用alter)将AUTO_INCREMENT设置成1,然后就可以正常插入数据

root密码管理设置root用户的密码mysqladmin -uroot password
'password'。


修改root用户的密码mysqladmin -uroot -p password 'password'。
数据库,表管理进入mysqlmysql -h hostname -uroot -p。
查看数据库:mysql> show databases;
进入某个库:mysql> use location;
查看表信息:mysql> show tables;
查看表结构:mysql> desc Contact;
改表名:mysql> rename table Contact to Contact_new。
删除库:           mysql> drop database location。
删除表:         mysql> drop table Contact。
授权部分建立用户并授权:  mysql> grant all on location.* to gk1020@'10.1.11.71' identified by 'gk1020'。
取消授权:        mysql> revoke all on location.* from gk1020@'10.1.11.71'。
刷新权限:        mysql> flush privileges。
操作语句查询:  mysql> select * from Contact。
                     mysql> select count(*) from Contact。
修改:              mysql> update Contact set RegTime=‘2008-01-01 00:00:00' where id=1。
                     mysql> update Contact set RegTime=‘2008-01-01 00:00:00',CID=1 where id=1。
插入:              mysql> insert into Contact values('',''…)
                     mysql> insert into Contact(ID,CID,Contact) values('',''…)
删除:              mysql> delete from Contact where id=1。
导出导出数据库:locationmysqldump -uroot -p location >./location.sql。
导出某个表:     mysqldump -uroot -p --database location --table Contact >./contact.sql。
导出数据库:     location的数据结构mysqldump -d -uroot -p location >./location.sql。
复制表复制表:  Contact为Contact_bakmysql> create table Contact_bak as select * from Contact。
复制表Contact的结构:mysql> create table Contact_bak as select * from Contact where 1=2。
查看正在执行的任务:mysql> show processlist。 
mysql db_name < data_file.sql
执行完命令之后如果没有任何提示,则说明我们的数据已经导入成功了(注意文件格式是date_file.sql, sql.gz在中文下会出错) 。
———————–2008.12.9 update———————-
有些时候你可能会遇到错误信息,说你的权限不够,那我们就需要加一些参数了。
mysql -hlocalhost -uusername -p db_name < data_file.sql
这样回车之后,就会有输入密码的提示,然后输入你的数据库密码就可以导入了。
参数-h是指定导入的服务器,-u是数据库的用户名,-p是登录数据库的密码,这三个参数后面不用加空格。

查看表结构:
desc 表名;
show columns from 表名;
describe 表名;
show create table 表名;
一个table有id,name,content字段
只导出content字段的所有记录,怎么导?
注意下面提高的导入和导出语句是在mysql的提示符下进行
导入:select content from table_name into outfile "d:/test.sql";(如果是多个字段可以用逗号将其分开)
导出:LOAD DATA INFILE 'd:/test.sql' INTO TABLE table_name (content);
 
select count(*) as total from 表名
 
SQLyog 连不上MySQL , ERROR NO.1045 简单的解决方法 .
1。停止MySQL服务:运行net stop mysql
linux是/etc/init.d/mysql stop
 
2。修改MySQL源文件夹中的my.ini,运用查找功能找到【mysqld】,在其下加上一行 skip-grant-tables,保存。
linux下的配置文件是my.cnf,也要加上这一行skip-grand-tables。
 
3。启动MySQL服务:运行net start mysql
linux下的启动命令是/etc/init.d/mysql start
 
SELECT   *   FROM   table   LIMIT   5;  显示前五条
select     *     from     issu_info     limit     7,6;      
Limit     7,6       从第8条开始取,取6条
在mysql中利用select语句的一个特性就可以很方便地实现查询结果的分页,select语句的语法:
SELECT [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [HIGH_PRIORITY]
[DISTINCT | DISTINCTROW | ALL]
select_expression,...
[INTO OUTFILE 'file_name' export_options]
[FROM table_references
[WHERE where_definition]
[GROUP BY col_name,...]
[HAVING where_definition]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] ,...]
[LIMIT [offset,] rows]
[PROCEDURE procedure_name] ]
查看版本:进入mysql命令行:\s 或status
安装mysql错误:
 MySQL 5.5.14
– Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error at cmake/readline.cmake:82 (MESSAGE):
Curses library not found. Please install appropriate package,
remove CMakeCache.txt and rerun cmake.On Debian/Ubuntu, package name is libncurses5-dev, on Redhat and derivates it is ncurses-devel.
Call Stack (most recent call first):
cmake/readline.cmake:126 (FIND_CURSES)
cmake/readline.cmake:216 (MYSQL_USE_BUNDLED_LIBEDIT)
CMakeLists.txt:256 (MYSQL_CHECK_READLINE)
– Configuring incomplete, errors occurred!
如果你的系统是Ubuntu或Debian:
apt-cache search ncurses
apt-get install libncurses5-dev
需要安装ncurses-devel包--- apt-get install libncurses5-dev 或者sudo apt-get install libncurses5-dev
libncurses5-dev is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 250 not upgraded.
提示已经是最新的了,不用更新

linux下的mysql的配置文件:/etc/mysql/my.cnf
linux下mysql的重启:service mysql restart
是否启用了日志
mysql>show variables like 'log_bin';
怎样知道当前的日志文件---具体的路径在mysql的配置文件中
mysql> show master status;
查看从某一段时间到某一段时间的日志
 
mysqlbinlog --start-datetime='2008-01-19 00:00:00' --stop-datetime='2008-01-30 00:00:00'  /var/log/mysql/mysql-bin.000006 > mysqllog1.log

apt-get install mysql-devel命令提示如下”
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package mysql-dev
解决方法:搜索aptitude search mysql | grep devel
p   liblua5.1-sql-mysql-dev         - luasql development files for the Lua langu
p   libmysql++-dev                  - MySQL C++ library bindings (development)
i   libmysqlclient-dev              - MySQL database development files
p   libmysqlcppconn-dev             - MySQL Connector for C++ (development files
p   libmysqld-dev                   - MySQL embedded database development files
p   libmysqld-pic                   - MySQL database development files
然后apt-get install libmysqlclient-dev即可
在g++时将-lmysqlclient写入到Makefile文件中就可以了。

 
mysql---1130错误解决办法:原因是不允许远程连接到这个数据库
在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称”%”,重启mysql服务-----windows下
mysql -u root -p
mysql>use mysql;
mysql>update user set host = ‘%’ where user =’root’;
mysql>flush privileges;
mysql>select ‘host’,'user’ from user where user=’root’;
授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@'%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO ‘myuser’@'192.168.1.3′ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;

Write a Comment