mysql数据库基本操作以及备份
1.基本查看及登录:
mysql -uroot -p
show databases; ##查看数据库
use mysql; ##进入数据库mysql
show tables; ##查看表
desc user; ##查看表的结构,表头
2.表的操作:查,改,删,增
select * from user \G; ##查询user表中的所有数据记录
select host,user,password from user; ##指定user表的字段进行查询
update mysql.user set password=password("123123") where user="root"; ##修改root密码
delete from mysql.user where user=""; ##删除用户为空的数据记录
create database auth; ##创建库auth
create table auth.users(user_name char(16) not null, user_passwd char(48) default '',primary key (user_name)); ##创建表auth.users
insert into auth.users values('hehe','pwd@123'); ##新增记录
drop table auth.users; ##删除表users
drop database auth; ##删除库auth
3.mysql的权限管理
grant all on 库.* to 用户@客户机地址 identified by '密码';
show grants for 用户@客户机地址;
revoke 权限列表 on 库.* from 用户@客户机地址;
grant select,delete on mysql.user to 'useradm'@'192.168.100.100' identified by '123123';
show grants for 'useradm'@'192.168.100.100';
revoke select,delete on mysql.user from 'useradm'@'192.168.100.100';
delete from mysql.user where user='useradm';
flush privileges;
4.备份与恢复mysql
登录到mysql
create database auth;
Quit
/etc/init.d/mysqld stop
cd /usr/local/mysql/data
cp -rf mysql/user.* auth/
chown mysql:mysql auth/ -R
chmod 755 auth
chmod 660 auth/*
/etc/init.d/mysqld start
登录mysql
use auth;
show tables; ##能看到user表,desc能查看结构,select
mysql的冷备份:
/etc/init.d/mysqld stop
tar Jcf /opt/mysql-bak-$(date +%F).tar.xz /usr/local/mysql/data
模拟故障:
/etc/init.d/mysqld start
mysql登录
drop database auth;
quit;
/etc/init.d/mysqld stop
mysql恢复:
tar Jxf /opt/mysql-bak-*.tar.xz -C /root
cd /root/usr/local/mysql/data
cp -rf auth/ /usr/local/mysql/data
chown mysql:mysql /usr/local/mysql/data/auth -R
cd /usr/local/mysql/data
chmod 755 auth
chmod 660 auth/*
/etc/init.d/mysqld start
mysql登录验证
show databases; ##数据已经恢复
在线备份;mysqldump
netstat -utpln |grep 3306 ##确保mysql启动
mysqldump -uroot -p123123 --all-databases >/opt/all.sql #备份
mysqldump -uroot -p123123 --all-databases --lock-talbes=0 >/opt/all.sql
mysql -uroot -p123123 恢复
在bash中操作mysql:去交互
vi /root/test.sh
mysql -uroot -p123123 <
create database hehe;
END
:wq
chmod +x /root/test.sh
/root/test.sh
5.mysql忘记密码的解决方案:
vim /etc/my.cnf
[mysqld]
skip-grant-tables ##添加该行,跳过密码验证
:wq
/etc/init.d/mysqld restart
mysql ##登录后操作
update mysql.user set password=password("123123") where user="root"; ##修改root密码
Exit
vim /etc/my.cnf
[mysqld]
#skip-grant-tables ##注释该行
:wq
/etc/init.d/mysqld restart
6.单独管理用户:
用户管理
mysql>use mysql;
mysql> select host,user,password from user ;
mysql>create user linuxfan identified by '123123'; ##identified by 会将纯文本密码加密作为/散列值存储
mysql>rename user linuxfan to fage;##mysql 5之后可以使用,之前需要使用update 更新user表
mysql> set password for fage=password('123'); ##:需在mysql.user 表中使用
mysql> update mysql.user set password=password('123') where user='fage';##
指定表中数据的根位置,无需进入表。
mysql> show grants for fage;查看用户权限
mysql> grant select on mysql.user to fage; ##赋予权限
mysql> revoke select on mysql.user from fage; ##如果权限不存在会报错
mysql>drop user fage; ##mysql5之前删除用户时必须先使用revoke 删除用户权限,然后删除用户,mysql5之后drop 命令可以删除用户的同时删除用户的相关权限
7.设置mysql5.5显示中文名:
vi /etc/my.cnf
[client]
default-character-set = utf8
[mysqld]
character-set-server = utf8
init_connect='SET NAMES utf8'
:wq
/etc/init.d/mysqld restart