mysql设置密码
mysql默认没有密码,所以有必要设置一个密码
mysqladmin -uroot password '123456'
mysql -uroot -p123456
更密码
mysqladmin -uroot -p123456 password 222222
mysql重置密码
/usr/local/mysql/bin/mysql -uroot
更改环境变量PATH,增加mysql绝对路径
密码重置
vi /etc/my.cnf//增加skip-grant
重启mysql服务 /etc/init.d/mysqld restart
mysql -uroot
use mysql;
update user set password=password('111222') where user='root';
mysql> select password from user; 查看
第二个password表示一个函数('111222')就是新设置的密码,改完密码后再把skip-grant去掉
mysql登陆
1本地登录的方式式:
mysql -uroot -p111222
2用sockt登录:(只适合本机)
mysql -uroot -p333333 -S/tmp/mysql.sock
当本地有多个mysql时,可以使用socket去登录
3远程登录的方式:(比如登录另外一台linux的mysql)
mysql -uroot -h127.0.0.1 -P3306 -p111222
mysql -uroot -p123456 -e “show databases” 这种方式可以用在脚本里
MySQL常用命令
查询库 show databases;
切换库 use mysql;
查看库里的表 show tables;
查看表里的字段 desc tb_name;
查看建表语句 show create table tb_name\G;
查看当前用户 select user();
查看当前使用的数据库 select databsase();
mysql> create database aming; 创建一个库
mysql> create table tb1 (`id` int(4), `name` char(40)) ENGINE=MyISAM DEFAULT CHARSET=gbk; 创建表:id和name上面的引号是反引号,Esc下面的键
mysql> create table t1(`id` int(4), `name` char(40)) ENGINE=InnoDB DEFAULT CHARSET=UTF8; 创建表时指定引擎和字符集
mysql> show create table tb1\G; 查看tb1的创建语句
mysql> insert into tb1 values(1,'aming'); 给表里面插入一些数据
因为有两个字段id和name,所以要分开写id是1,name因为是char所以aming要加单引号
mysql> show variables; 查看所有的参数
mysql> show variables like '%timeout'; 查看指定的某个参数%是通配的意思
mysql> set global max_connect_errors=1000; 修改参数,如果要重启还是1000,要修改、/etc/my.cnf的配置文件
mysql> show processlist; 查看队列,相当于ps 和top,查看当前mysql在干什么,那些用户在连接它,有没有锁表就用这个命令看
mysql> show full processlist; 查看完整的队列
mysql> truncate table aming.tb1; 清空一个表但是不删除表
mysql> drop table tb1; 删除表
mysql> drop database db1; 删除库
mysql> select * from tb1;
mysql> select version; 查看数据库的版本
MySQL创建用户以及授权
grant all on *.* to 'user1' identified by 'passwd';
grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1' identified by 'passwd';
grant all on db1.* to 'user3'@'%' identified by 'passwd';
show grants;
show grants for user2@192.168.133.1; 查看指定用户的授权
撤销已经赋予给 MySQL 用户权限的权限。
revoke 跟 grant 的语法差不多,只需要把关键字 “to” 换成 “from” 即可:
grant all on *.* to dba@localhost;
revoke all on *.* from dba@localhost;
MySQL grant、revoke 用户权限注意事项
1. grant, revoke 用户权限后,该用户只有重新连接 MySQL 数据库,权限才能生效。
2. 如果想让授权的用户,也可以将这些权限 grant 给其他用户,需要选项 “grant option“
grant select on testdb.* to dba@localhost with grant option;
这个特性一般用不到。实际中,数据库权限最好由 DBA 来统一管理。
常用SQL语句
select count(*) from mysql.user;
select * from mysql.db;
select db from mysql.db;
select db,user from mysql.db;
select * from mysql.db where host like '192.168.%';
insert into db1.t1 values (1, 'abc');
update db1.t1 set name='aaa' where id=1; 针对db1库t1表 把id=1的name更新成aaa
truncate table db1.t1;
drop table db1.t1;
drop database db1;
MySQL数据库的备份与恢复
备份库 mysqldump -uroot -p123456 mysql > /tmp/mysql.sql
恢复库 mysql -uroot -p123456 mysql < /tmp/mysql.sql
备份表 mysqldump -uroot -p123456 mysql user > /tmp/user.sql
恢复表 mysql -uroot -p123456 mysql < /tmp/user.sql
备份所有库 mysqldump -uroot -p -A >/tmp/123.sql
只备份表结构 mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql