mysql笔记

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-characterset=gbk 数据库名>/tmp/bak$(date +%F).sql
mysqldump -u用户 -p'oldboy' [-S /data/3306/mysql.sock ] --defaults-characterset=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-characterset=gbk -B 数据库名1 数据库名2>/tmp/bak$(date +%F).sql
mysqldump -u用户 -p'oldboy' [-S /data/3306/mysql.sock ] --defaults-characterset=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参数

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章