您的位置:首页 > 数据库 > MySQL

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: