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参数