1.1启动与关闭mysql 单实例: 方法一: /etc/init.d/mysqld start/stop netstat -lnt|grep 3306 提示:/etc/init.d/mysqld由mysql程序中的mysql.server复制而来 方法二: /usr/local/mysql/bin/mysqld_safe --user=mysql & killall mysqld重复使用知道出现mysqld: no process killed 注意:关闭直到出现mysqld: no process killed表示完成关闭操作。方法二的关闭命令一般生产环境下不使用。 多实例: /data/3306/mysql start/stop /data/3307/mysql start/stop 1.2登录mysql 单实例:
1.mysql----刚装完系统无密码情况登录方式 2.mysql -uroot --------刚装完系统无密码情况登录方式 3.mysql -uroot -p ------------这里标准命令行登录命令 4.mysql -uroot -p'oldboy123'----------非脚本里一般不这样用,密码明文的会泄露密码 多实例: mysql -uroot -p -S /data/3306/mysql.sock 1.3mysql授权 CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass'; GRANT ALL ON db1. TO 'jeffrey'@'localhost'; 意思两条等同于GRANT ALL ON db1. TO 'jeffrey'@'localhost' IDENTIFIED BY 'mypass'; GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost'; GRANT USAGE ON . TO 'jeffrey'@'localhost' WITH MAX_QUERIES_PER_HOUR 90; 1.4设置修改mysql root用户密码 由于安装mysql后,默认的管理员root密码为空,很不安全,因此需要修改 mysqladmin -u root password 'ryan' 修改root密码方法一 mysqladmin -u root -p'oldboy123' password 'oldboy' 修改root密码方法二 mysql>UPDATE mysql.user SET password=PASSWORD("oldboy123") WHERE user='root'; mysql>FLUSH PRIVILEGES; 修改root密码方法三 mysql安装完毕后,root默认口令为空,需要马上修改root口令 mysql>set password=password('oldboy123') 1.5 如何召回丢失的mysql密码 单实例: killall mysqld mysqld_safe --skip-grant-table & mysql -u root -p update mysql.user set password=PASSWORD('123456') WHERE USER='root' killall mysqld 重启mysql服务/etc/init.d/mysqld start 多实例: killall mysqld mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-table & mysql -u root -p -S /data/3306/mysql.sock 修改密码 mysql>UPDATE mysql.user SET password=PASSWORD("oldboy123") WHERE user='root'; mysql>FLUSH PRIVILEGES; mysq>exit; 重启登录测试 killall mysqld 单实例:/etc/init.d/mysqld restart 多实例:/data/3306/mysql restart

二数据库操作 create database ceshi; show databases drop database select user,host from mysql.user;------------查看数据库中的用户 drop user "user"@"主机域" help show help show create; show create database ceshi----------查看创建数据的脚本 select database()-------显示当前库 select user()------------显示当前用户 show tables show create user show variables like 'character_set%'-------------查看字符集 select version()-------------显示数据库版本 system whoami system ls -l/ show tables from 数据库 grant all privileges on 数据库.* to 123@localhost revoke 权限 on 数据库.* from 123@localhost show grants for 123@localhost ------------查看用户权限

三、常用命令(常用增删查改略) select * from test limit 6,5;-------查询test中从7条记录开始,查5条记录 select * from test limit 6;-----查询6条记录 上边sql等同于select * from test limit 0,6; \G----------以列表显示 desc mysql.user-----查看表结构 truncate table 表名-------------清空表 备份 在mysql命令中备份,system为跳出mysql执行系统命令,执行完毕再返回mysql mysql>system mysqldump -uroot -p'oldboy'-A -B >/tmp/oldboy.sql mysql>system ls -l /tmp/oldboy.sql 在linux中备份(-A表示完整备份,否则用-B指定多个数据库) mysqldump -uroot -p'oldboy' -S /data/3306/mysql.sock -B 数据库名>/tmp/bak.sql 恢复 mysql -uroot -p'oldboy'-S /data/3307/mysql.sock </tmp/bak.sql 四、备份和恢复 set names gbk ------------------设置字符集 修改字段字符集后,再插入中文就不会乱码了 也可在恢复时mysql的命令行中增加字符集defaults-character_set=gbk mysql -uroot -p'oldboy' -e "select * from oldboy.test;" mysql -uroot -p'oldboy' -e "set names gbk;select * from oldboy.test;"
提示:1.文件本身字符集要正确gb2312 2.文件中加入set names gbk

更改my.cnf参数 [mysqld] defaults-character_set=gbk ----------设置服务端server字符集和数据库字符集 提示:1.在my.cnf配置文件里[mysqld]模块下添加字符集配置,生效后,创建数据库和表默认都是这个字符集。2.客户端字符集设置,set names gbk,这样可以确保插入后的中文不出现乱码,对执行set names gbk前插入的中文无效

*show variables like 'character_set%' character_set_client gbk ####客户端字符集,set names gbk character_set_connection gbk ####连接字符集,set names gbk character_set_database gbk ####数据库字符集,配置文件指定或建库建表指定 character_set_results gbk ####返回结果字符集,set names gbk character_set_server gbk ####服务器字符集,配置文件指定或建库建表指定

备份数据库(多实例增加sock)(-A,-B使用) mysqldump -u用户 -p'oldboy' [-S /data/3306/mysql.sock ] --defaults-character_set=gbk 数据库名>/tmp/bak_$(date +%F).sql mysqldump -u用户 -p'oldboy' [-S /data/3306/mysql.sock ] --defaults-character_set=gbk 数据库名 |gzip>/tmp/bak_$(date +%F).sql.gz 提示:-B(创建数据库,use 数据库,切换数据库) egrep -v "#|*|--|^$" /tmp/bak_$(date +%F).sql

备份多个库(必须使用-B) mysqldump -u用户 -p'oldboy' [-S /data/3306/mysql.sock ] --defaults-character_set=gbk -B 数据库名1 数据库名2>/tmp/bak_$(date +%F).sql mysqldump -u用户 -p'oldboy' [-S /data/3306/mysql.sock ] --defaults-character_set=gbk -B 数据库名1 数据库名2 |gzip>/tmp/bak_$(date +%F).sql.gz

分库备份 mysqldump -u用户 -p'oldboy' -S /data/3306/mysql.sock 数据库名1 >/tmp/bak_$(date +%F).sql mysqldump -u用户 -p'oldboy' -S /data/3307/mysql.sock 数据库名2 >/tmp/bak_$(date +%F).sql

备份表(-B系统会认为是两个库,-B系统认为是库和表)(-d只备份结构) mysqldump -u用户 -p'oldboy' -S /data/3306/mysql.sock 数据库名1 表名 >/tmp/bak_$(date +%F).sql mysqldump -u用户 -p'oldboy' -S /data/3306/mysql.sock 数据库名1 表名1 表名2 >/tmp/bak_$(date +%F).sql mysqldump -u用户 -p'oldboy' -d -S /data/3306/mysql.sock 数据库名1 表名 >/tmp/bak_$(date +%F).sql 恢复数据库(sql文件中没有use 数据库需要在在mysql命令中指定数据库) 方法一: use 数据库名 source 备份的sql文件 方法二: mysql -u root -p '123' -S /data/3306/mysql.sock -e "use test;source /tmp/bak_212.sql;" 方法三: mysql -u root -p '123' -S /data/3306/mysql.sock < /tmp/bak.sql -e参数 mysql -u root -p '123' -S /data/3306/mysql.sock -e "select * from test;" mysql -u root -p '123' -S /data/3306/mysql.sock -e "show full processlist;" >a.log mysql -u root -p '123' -S /data/3306/mysql.sock -e "show variables;"--------------查看mysql的参数配置 mysql -u root -p '123' -S /data/3306/mysql.sock -e "show global status;"------------查看数据库状态 mysql -u root -p '123' -S /data/3306/mysql.sock -e "show global status;" |grep select mysql -u root -p '123' -S /data/3306/mysql.sock -e "show variables;" | grep key_buffer_size--------查看缓存区大小 mysql -u root -p '123' -S /data/3306/mysql.sock -e "set global key_buffer_size =21777218;"----------不重启数据库,修改参数,修改配置文件后,需要重启数据库 sed -i 's#被替换值#替换后的值#g' 文件名

echo "use database" |mysql -u root -p '123' -S /data/3306/mysql.sock 类似与-e参数