Mysql的使用方法,包括远程访问
2009-08-26 10:36
295 查看
mysql> create database shoptest;
Query OK, 1 row affected (0.00 sec)
mysql> use shoptest;
Database changed
mysql> show tables
-> ;
Empty set (0.00 sec)
设置远程访问:
mysql> grant all privileges on *.* to zhxue@'%' identified by '123456789';
Query OK, 0 rows affected (0.00 sec)
其中:shoptest是数据库名, zhxue是用户名 %表示所有IP都可以访问。你也可以限制特定IP'202.54.10.20' '123456789'是访问密码
如果你设置了防火墙,请把3306端口开放
在linux某个客户端上,远程访问
mysql -h c190 -u wgzhang -p
提示输入密码:
然后ok
#必须加类似这样的帐户,才可以远程登陆。 root帐户是无法远程登陆的,只可以本地登陆
我发现一个问题, 如果上面的命令你执行完毕, 你在 本地就是localhost , 执行 :
CODE:
mysql -hlocalhost -uadmin -padmin
结果是失败的。
原来 上面的 % 竟然不包括localhost
所以你还必须加上这样的 命令
mysql>GRANT ALL ON *.* TO admin@'localhost' IDENTIFIED BY 'admin' WITH GRANT OPTION;
查询data目录在哪:
mysql> show variables like 'datadir';
关于配置文件:
my.cnf默认是不存在的.你可以在/usr/local/share/mysql/下看到:
my-huge.cnf
my-innodb-heavy-4G.cnf
my-large.cnf
my-medium.cnf
my-small.cnf
等文件.将其中合适你机器配置的文件拷贝到/etc/my.cnf或mysql data目录/my.cnf(/var/db/mysql)下或~/.my.cnf.文件内都有详细的说明
mysql日志
mysql有以下几种日志:
错误日志: -log-err
查询日志: -log
慢查询日志: -log-slow-queries
更新日志: -log-update
二进制日志: -log-bin
在mysql的安装目录下,打开my.ini,在后面加上上面的参数,保存后重启mysql服务就行了。
例如:
#Enter a name for the binary log. Otherwise a default name will be used.
#log-bin=
#Enter a name for the query log file. Otherwise a default name will be used.
#log=
#Enter a name for the error log file. Otherwise a default name will be used.
log-error=
#Enter a name for the update log file. Otherwise a default name will be used.
#log-update=
查看日至:
1. 首先确认你日志是否启用了
mysql>show variables like 'log_bin';
如果启用了,即ON
那日志文件就在mysql的安装目录的data目录下
cat/tail 日志文件名
2. 怎样知道当前的日志
mysql> show master status;
3. 查看从某一段时间到某一段时间的日志
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
4. 修改MySQL日志文件位置
MySQL日志文件相信大家都有很多的了解,MySQL日志文件一般在:/var/log/mysqld.log,下面就教您修改MySQL日志文件位置的方法,供您参考。
今天需要改MySQL日志文件的位置,发现在/etc/my.cnf中怎么也改不了。
后来发现MySQL日志位是指定的:
vim /etc/init.d/mysqld得知这里的已经配置
get_mysql_option mysqld datadir "/var/lib/mysql"
datadir="$result"
get_mysql_option mysqld socket "$datadir/mysql.sock"
socketfile="$result"
get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
errlogfile="$result"
get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld.pid"
mypidfile="$result"
更改这里应该就行了
http://space.itpub.net/32939/viewspace-590813
vi /etc/my.cnf (或其他my.cnf位置)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
# old_passwords=1
table_cache = 300
default-character-set = utf8
log = /var/lib/mysqllog/mysql.log
log-bin = /var/lib/mysqllog/log-bin
log-slow-queries = /var/lib/mysqllog/slowquery.log
long_query_time=2
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
其中黑体的内容为增加的。斜体的log-error=/var/log/mysqld.log原有的
mysql有以下几种日志:
错误日志: -log-err
查询日志: -log
慢查询日志: -log-slow-queries
更新日志: -log-update 我的这个版本已经不用了,update的操作也记入查询日志中。设置上后错误日志中会有一条错误信息,不过不影响使用
二进制日志: -log-bin
附录:
//显示所有本机上的二进制日志
mysql> SHOW MASTER LOGS;
//删除所有本机上的二进制日志
mysql> RESET MASTER;
//删除所有创建时间在binary-log.xxx之前的二进制日志
mysql> PURGE MASTER LOGS TO 'binary-log.xxx';
//只保留最近6天的日志,之前的都删掉
find /var/intra -type f -mtime +6 -name "*.log" -exec rm -f {} /;
//用键盘左上角(也就是Esc下面)那个键包围起来,说明是命令。-1d是昨天,以此类推-1m是上个月等等
day=`/bin/date -v -1d +%Y%m%d`;
//给文件改名
mv xxx.log xxx-${day}.log;
//这里还要加上数据库的用户名密码,作用是更新日志(包括二进制日志和查询日志等等)
mysqladmin flush-logs
打开mysql的慢查询日志记录
mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql的慢查询日志记录呢?
其实打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加上如下代码:
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=2
注:
log-slow-queries设置把日志写在那里,为空的时候,系统会给慢查询日志赋予主机名,并被附加slow.log./var/lib/mysql/slowquery.log为日志存放的文件的位置,一般这个目录要有mysql的运行帐号的可写权限,一般都将这个目录设置为mysql的数据存放目录
long_query_time=2中的2表示查询超过两秒才记录.
如果设置了参数log-long-format,那么所有没有使用索引的查询也将被记录。在文件my.cnf或my.ini中加入下面这一行可以记录这些查询
这是一个有用的日志。它对于性能的影响不大(假设所有查询都很快),并且强调了那些最需要注意的查询(丢失了索引或索引没有得到最佳应用)
# Time: 070927 8:08:52
# User@Host: root[root] @ [192.168.0.20]
# Query_time: 372 Lock_time: 136 Rows_sent: 152 Rows_examined: 263630
select id, name from manager where id in (66,10135);
这是慢查询日志中的一条,用了372秒,锁了136秒,返回152行,一共查了263630行
如果日志内容很多,用眼睛一条一条去看会累死,mysql自带了分析的工具,使用方法如下:
命令行下,进入mysql/bin目录,输入mysqldumpslow –help或--help可以看到这个工具的参数,主要有
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
--verbose verbose
--debug debug
--help write this text to standard output
-v verbose
-d debug
-s ORDER what to sort by (t, at, l, al, r, ar etc), 'at' is default
-r reverse the sort order (largest last instead of first)
-t NUM just show the top n queries
-a don't abstract all numbers to N and strings to 'S'
-n NUM abstract numbers with at least n digits within names
-g PATTERN grep: only consider stmts that include this string
-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all
-i NAME name of server instance (if using mysql.server startup scrīpt)
-l don't subtract lock time from total time
-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。
这个参数不知道支持不,没做测试呢log_output=FILE 这是指定日志输出到文件,还可指定输出到表,或者二者都有,或者不输出。可在运行时修改。
1、启动mysql的log-bin记录
方法昨天已经做过,就是修改主机上的my.cnf文件,它在FreeBSD系统的路径上一般是/var/db/mysql或/etc目录。
增加log-bin=/路径/文件名;
保存后,使用下面的命令激活log-bin服务。
# mysqladmin -uroot -ppassword flush-logs
如果系统没有使用动态参数文件my.cnf,则可以在启动服务的/usr/local/bin/mysqld_safe参数后面增加--log-bin=/路径/文件名,达到同样的效果。
2、把需要使用到的日志记录文件拷贝到备机上。假设我放到/root/mysql目录,文件名是mysql.bin.000001等。
3、使用mysqlbinlog命令恢复日志
# mysqlbinlog -d test /root/mysql/mysql-bin.000001|mysql -uroot -ppassword
※附录
1、关于mysqlbinlog在mysql 5.0上的使用方法,可以参考:官方资料
2、如果不知道log-bin存放的文件位置,可以使用下面的命令查看:
mysql -uroot -ppassword -e 'SHOW BINLOG EVENTS /G'
3、当只是需要恢复部分记录的时候,你可以使用时间点或位置点来定位,例如:
mysqlbinlog --start-date="2005-04-20 9:01:00" --stop-date="2005-04-20 10:00:01" /var/log/mysql/bin.123456|mysql -uroot -ppassword[code]
意思是恢复4月20日早上9点到10点这一段时间的数据。
[code]mysqlbinlog --start-position="368301" --stop-position="368312"/var/log/mysql/bin.123456| mysql -uroot -pmypwd
意思是重做368301到368312位置点之间的操作。(位置点可以就是用mysqlbinlog看到的at xxx节点)
mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00"
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
同样的,如果我们只是想查看某段时间的操作,直接把它导到一个文件即可。
4、mysql不会自动清除日志,可以使用它自带的mysql-log-rotate 脚本或手动编写脚本清除旧日志。
mysql查看连接数 (linux)
2008-06-01 11:141、查看当前所有连接的详细资料:
./mysqladmin -uadmin -p -h10.140.1.1 processlist
2、只查看当前连接数(Threads就是连接数.):
./mysqladmin -uadmin -p -h10.140.1.1 status
DUMP
导出:mysqldump -u root -p opencirrus1 > opencirrus.tmp
导入:mysql -u root -p opencirrus3 < opencirrus.tmp
Query OK, 1 row affected (0.00 sec)
mysql> use shoptest;
Database changed
mysql> show tables
-> ;
Empty set (0.00 sec)
设置远程访问:
mysql> grant all privileges on *.* to zhxue@'%' identified by '123456789';
Query OK, 0 rows affected (0.00 sec)
其中:shoptest是数据库名, zhxue是用户名 %表示所有IP都可以访问。你也可以限制特定IP'202.54.10.20' '123456789'是访问密码
如果你设置了防火墙,请把3306端口开放
在linux某个客户端上,远程访问
mysql -h c190 -u wgzhang -p
提示输入密码:
然后ok
#必须加类似这样的帐户,才可以远程登陆。 root帐户是无法远程登陆的,只可以本地登陆
我发现一个问题, 如果上面的命令你执行完毕, 你在 本地就是localhost , 执行 :
CODE:
mysql -hlocalhost -uadmin -padmin
结果是失败的。
原来 上面的 % 竟然不包括localhost
所以你还必须加上这样的 命令
mysql>GRANT ALL ON *.* TO admin@'localhost' IDENTIFIED BY 'admin' WITH GRANT OPTION;
查询data目录在哪:
mysql> show variables like 'datadir';
关于配置文件:
my.cnf默认是不存在的.你可以在/usr/local/share/mysql/下看到:
my-huge.cnf
my-innodb-heavy-4G.cnf
my-large.cnf
my-medium.cnf
my-small.cnf
等文件.将其中合适你机器配置的文件拷贝到/etc/my.cnf或mysql data目录/my.cnf(/var/db/mysql)下或~/.my.cnf.文件内都有详细的说明
mysql日志
mysql有以下几种日志:
错误日志: -log-err
查询日志: -log
慢查询日志: -log-slow-queries
更新日志: -log-update
二进制日志: -log-bin
在mysql的安装目录下,打开my.ini,在后面加上上面的参数,保存后重启mysql服务就行了。
例如:
#Enter a name for the binary log. Otherwise a default name will be used.
#log-bin=
#Enter a name for the query log file. Otherwise a default name will be used.
#log=
#Enter a name for the error log file. Otherwise a default name will be used.
log-error=
#Enter a name for the update log file. Otherwise a default name will be used.
#log-update=
查看日至:
1. 首先确认你日志是否启用了
mysql>show variables like 'log_bin';
如果启用了,即ON
那日志文件就在mysql的安装目录的data目录下
cat/tail 日志文件名
2. 怎样知道当前的日志
mysql> show master status;
3. 查看从某一段时间到某一段时间的日志
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
4. 修改MySQL日志文件位置
MySQL日志文件相信大家都有很多的了解,MySQL日志文件一般在:/var/log/mysqld.log,下面就教您修改MySQL日志文件位置的方法,供您参考。
今天需要改MySQL日志文件的位置,发现在/etc/my.cnf中怎么也改不了。
后来发现MySQL日志位是指定的:
vim /etc/init.d/mysqld得知这里的已经配置
get_mysql_option mysqld datadir "/var/lib/mysql"
datadir="$result"
get_mysql_option mysqld socket "$datadir/mysql.sock"
socketfile="$result"
get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
errlogfile="$result"
get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld.pid"
mypidfile="$result"
更改这里应该就行了
http://space.itpub.net/32939/viewspace-590813
vi /etc/my.cnf (或其他my.cnf位置)
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 compatibility package).
# old_passwords=1
table_cache = 300
default-character-set = utf8
log = /var/lib/mysqllog/mysql.log
log-bin = /var/lib/mysqllog/log-bin
log-slow-queries = /var/lib/mysqllog/slowquery.log
long_query_time=2
[mysql.server]
user=mysql
basedir=/var/lib
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
其中黑体的内容为增加的。斜体的log-error=/var/log/mysqld.log原有的
mysql有以下几种日志:
错误日志: -log-err
查询日志: -log
慢查询日志: -log-slow-queries
更新日志: -log-update 我的这个版本已经不用了,update的操作也记入查询日志中。设置上后错误日志中会有一条错误信息,不过不影响使用
二进制日志: -log-bin
附录:
//显示所有本机上的二进制日志
mysql> SHOW MASTER LOGS;
//删除所有本机上的二进制日志
mysql> RESET MASTER;
//删除所有创建时间在binary-log.xxx之前的二进制日志
mysql> PURGE MASTER LOGS TO 'binary-log.xxx';
//只保留最近6天的日志,之前的都删掉
find /var/intra -type f -mtime +6 -name "*.log" -exec rm -f {} /;
//用键盘左上角(也就是Esc下面)那个键包围起来,说明是命令。-1d是昨天,以此类推-1m是上个月等等
day=`/bin/date -v -1d +%Y%m%d`;
//给文件改名
mv xxx.log xxx-${day}.log;
//这里还要加上数据库的用户名密码,作用是更新日志(包括二进制日志和查询日志等等)
mysqladmin flush-logs
打开mysql的慢查询日志记录
mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql的慢查询日志记录呢?
其实打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加上如下代码:
log-slow-queries=/var/lib/mysql/slowquery.log
long_query_time=2
注:
log-slow-queries设置把日志写在那里,为空的时候,系统会给慢查询日志赋予主机名,并被附加slow.log./var/lib/mysql/slowquery.log为日志存放的文件的位置,一般这个目录要有mysql的运行帐号的可写权限,一般都将这个目录设置为mysql的数据存放目录
long_query_time=2中的2表示查询超过两秒才记录.
如果设置了参数log-long-format,那么所有没有使用索引的查询也将被记录。在文件my.cnf或my.ini中加入下面这一行可以记录这些查询
这是一个有用的日志。它对于性能的影响不大(假设所有查询都很快),并且强调了那些最需要注意的查询(丢失了索引或索引没有得到最佳应用)
# Time: 070927 8:08:52
# User@Host: root[root] @ [192.168.0.20]
# Query_time: 372 Lock_time: 136 Rows_sent: 152 Rows_examined: 263630
select id, name from manager where id in (66,10135);
这是慢查询日志中的一条,用了372秒,锁了136秒,返回152行,一共查了263630行
如果日志内容很多,用眼睛一条一条去看会累死,mysql自带了分析的工具,使用方法如下:
命令行下,进入mysql/bin目录,输入mysqldumpslow –help或--help可以看到这个工具的参数,主要有
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
--verbose verbose
--debug debug
--help write this text to standard output
-v verbose
-d debug
-s ORDER what to sort by (t, at, l, al, r, ar etc), 'at' is default
-r reverse the sort order (largest last instead of first)
-t NUM just show the top n queries
-a don't abstract all numbers to N and strings to 'S'
-n NUM abstract numbers with at least n digits within names
-g PATTERN grep: only consider stmts that include this string
-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all
-i NAME name of server instance (if using mysql.server startup scrīpt)
-l don't subtract lock time from total time
-s,是order的顺序,说明写的不够详细,俺用下来,包括看了代码,主要有
c,t,l,r和ac,at,al,ar,分别是按照query次数,时间,lock的时间和返回的记录数来排序,前面加了a的时倒叙
-t,是top n的意思,即为返回前面多少条的数据
-g,后边可以写一个正则匹配模式,大小写不敏感的
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出访问次数最多的20个sql语句和返回记录集最多的20个sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log
这个是按照时间返回前10条里面含有左连接的sql语句。
这个参数不知道支持不,没做测试呢log_output=FILE 这是指定日志输出到文件,还可指定输出到表,或者二者都有,或者不输出。可在运行时修改。
1、启动mysql的log-bin记录
方法昨天已经做过,就是修改主机上的my.cnf文件,它在FreeBSD系统的路径上一般是/var/db/mysql或/etc目录。
增加log-bin=/路径/文件名;
保存后,使用下面的命令激活log-bin服务。
# mysqladmin -uroot -ppassword flush-logs
如果系统没有使用动态参数文件my.cnf,则可以在启动服务的/usr/local/bin/mysqld_safe参数后面增加--log-bin=/路径/文件名,达到同样的效果。
2、把需要使用到的日志记录文件拷贝到备机上。假设我放到/root/mysql目录,文件名是mysql.bin.000001等。
3、使用mysqlbinlog命令恢复日志
# mysqlbinlog -d test /root/mysql/mysql-bin.000001|mysql -uroot -ppassword
※附录
1、关于mysqlbinlog在mysql 5.0上的使用方法,可以参考:官方资料
2、如果不知道log-bin存放的文件位置,可以使用下面的命令查看:
mysql -uroot -ppassword -e 'SHOW BINLOG EVENTS /G'
3、当只是需要恢复部分记录的时候,你可以使用时间点或位置点来定位,例如:
mysqlbinlog --start-date="2005-04-20 9:01:00" --stop-date="2005-04-20 10:00:01" /var/log/mysql/bin.123456|mysql -uroot -ppassword[code]
意思是恢复4月20日早上9点到10点这一段时间的数据。
[code]mysqlbinlog --start-position="368301" --stop-position="368312"/var/log/mysql/bin.123456| mysql -uroot -pmypwd
意思是重做368301到368312位置点之间的操作。(位置点可以就是用mysqlbinlog看到的at xxx节点)
mysqlbinlog --start-date="2005-04-20 9:55:00" --stop-date="2005-04-20 10:05:00"
/var/log/mysql/bin.123456 > /tmp/mysql_restore.sql
同样的,如果我们只是想查看某段时间的操作,直接把它导到一个文件即可。
4、mysql不会自动清除日志,可以使用它自带的mysql-log-rotate 脚本或手动编写脚本清除旧日志。
mysql查看连接数 (linux)
2008-06-01 11:141、查看当前所有连接的详细资料:
./mysqladmin -uadmin -p -h10.140.1.1 processlist
2、只查看当前连接数(Threads就是连接数.):
./mysqladmin -uadmin -p -h10.140.1.1 status
DUMP
导出:mysqldump -u root -p opencirrus1 > opencirrus.tmp
导入:mysql -u root -p opencirrus3 < opencirrus.tmp
相关文章推荐
- 总结mysql不能远程访问的方法
- 解决MySQL不允许从远程访问的方法
- Ubuntu下开启Mysql远程访问的方法
- centos中安装Mysql方法以及密码修改,远程访问。
- 允许远程用户登录访问mysql的方法
- 解决Navicat 报错:1130-host ... is not allowed to connect to this MySql server,MySQL不允许从远程访问的方法
- 解决MySQL不允许从远程访问的方法
- linux下使用yum安装mysql、启动、登录和远程访问
- mysql远程访问,主从/主主双机备份,以及使用keeplived实现故障自动切换(一)
- 使用JDBC访问MySql的一个公共方法的解决方案
- 允许远程用户登录访问mysql的方法
- 允许远程用户登录访问mysql的方法
- 远程连接MySQL,防火墙阻止访问,解决方法
- MySQL---数据库从入门走向大神系列(七)-Java访问数据库配置及简单使用方法execute
- ubuntu安装mysql不能远程访问的解决方法
- ubuntu10.10下mysql远程连接和访问慢的解决方法
- ubuntu下安装使用MySQL的一些注意事项(远程无法连接解决方法)
- 解决MySQL不允许从远程访问的方法
- MYSQL添加远程用户或允许远程访问方法
- 解决MySQL不允许从远程访问的方法