Mysql 常用管理基础命令(学习笔记四)

1、赋予权限:

grant all privileges on xxx to 'xxx'@'%' with grant option;

2、查看最大连接数配置:

show variables like '%max_connections%';

3、查看已用连接数:

    show global status like 'Max_used_connections';

4、查看mysql版本

select version();

5、显示数据库中某张表的所有列:

show full columns from 数据库名.表名

6.解决数据库乱码问题 

linux: 

1)首先找到my.cnf文件,位置:/etc/my.cnf。 

2)在[mysqld]下面添加:character-set-server=utf8, 

  在[mysql]下面添加:default-character-set=utf8,如下图

3)修改完成之后,重启mysql即可生效。 

7、修改数据库最大连接数

在/etc/my.cnf文件[mysqld]下面添加:max_connections=220

8.mysql启动,停止,重启 

service mysqld stop 

service mysqld start 

service mysqld restart 

9.查看mysql引擎:

show engines;

show variables like "%storage_engine%";

10、修改默认引擎:

vim /etc/my.cnf

default-storage-engin=InnoDB

11.修改表的引擎 

alter table tablename engine=innodb; 

12.查看表的创建语句 

show create table student;

13、关于mysql引擎

查看默认存储引擎

show variables like 'storage_engine';     

查看mysql支持的存储引擎

show variables like 'have%';

InnoDB      MyISAM     MEMORY   的存储引擎

InnoDB 优势在于提供了良好的事务管理,崩溃修复能力和并发控制。特点:读写效率稍微差,占用的数据空间相对比较大

 MyISAM 优势在于占用空间小,处理速度快,缺点不支持事务的完整性和并发性。

 MEMORY不常用。

InnoDB储存引擎支持事务处理,支持外键。同时支持崩溃修复能力,和并发控制。如果需要对事务的完整性要求比较高,要求实现并发控制,那选择InnoDB存储引擎有很大的优势。如果频繁的进行更新,删除操作的数据库,也可以选择InnoDB存储引擎。应为改存储引擎可以实现事务的提交和回滚。

MyISAM存储引擎的插入数据快,空间和内存使用比较低。如果表主要用于插入记录和读出记录,那么选择MyISAM比较高效率。如果应用的完整性,并发性要求低,也可以选择

14、忘记root密码

 编辑mysql主配置文件 my.cnf 在[mysqld]字段下添加参数  skip-grant  ,重启数据库服务,这样就可以进入数据库不用授权了 mysql -uroot ,修改相应用户密码 

use mysql;

 update user set password=password('your password') where  user='root';

flush privileges;  

最后修改/etc/my.cnf 去掉 skip-grant , 重启mysql服务

当我们第一次使用mysql命令的时候我们提示命令不存在的时候,我们加入path就行了

在配置文件中/etc/profile 中 

PATH=$PATH:/usr/local/mysql/bin

然后别忘记

source /etc/profile

或者写全路径   /usr/local/mysql/bin/mysql -uroot

给 mysql root用户设置密码

mysqladmin -uroot password '123456' 

登陆

mysql -uroot -p123456 

15、配置慢查询:

log_slow_queries=xx

long_query_time=1

16、常用操作

show databases;

use db;show tables;

desc tb;

show create table tb;

select user();

select database();

show status;

grant all on *.* to user1 identified by 'xxxxx';

创建普通用户并授权 grant all on *.* to user1 identified by '123456';

 grant all on db1.* to 'user2'@'10.0.2.100' identified by '111222';

grant all on db1.* to 'user3'@'%'identified by '231222';insert into tb1 (id,name) values(1,'aming');

on后边加授权的库

%  所有的意思。。。。

更改密码 UPDATE mysql.user SET password=PASSWORD("newpwd") WHERE user='username' ;  

查询select count(*) from mysql.user;

select * from mysql.db; 

select * from mysql.db  \G;   (格式化输出)

select * from mysql.db where host like '10.0.%';

插入 update db1.t1 set name='aaa' where id=1;  

清空表 truncate table db1.t1;

删除表 drop table db1.t1;

删除数据库 drop database db1;

修复表 repair table (表名)tb1 [use frm];(可以最好加上)

17、mysql备份与恢复

mysqldump -uroot -pxxx db>2.sql

mysql -uroot -p db<1.sql

只备份一个表  mysqldump -uroot -p db tb1 > 2.sql

-d(只备份创建表的语句)

备份时指定字符集 mysqldump -uroot -p --default-character-set=utf8  db >1.sql

恢复也指定字符集 mysql -uroot -p --default-character-set=utf8  db  < 1.sql

18 https://www.pureweber.com/article/myisam-vs-innodb/

myisam innodb两种引擎的比较

19、

mysql常用命令{

./mysql/bin/mysqld_safe --user=mysql &   # 启动mysql服务

./mysql/bin/mysqladmin -uroot -p -S ./mysql/data/mysql.sock shutdown    # 停止mysql服务

mysqlcheck -uroot -p -S mysql.sock --optimize --databases account       # 检查、修复、优化MyISAM表

mysqlbinlog slave-relay-bin.000001              # 查看二进制日志(报错加绝对路径)

mysqladmin -h myhost -u root -p create dbname   # 创建数据库

flush privileges;             # 刷新

show databases;               # 显示所有数据库

use dbname;                   # 打开数据库

show tables;                  # 显示选中数据库中所有的表

desc tables;                  # 查看表结构

drop database name;           # 删除数据库

drop table name;              # 删除表

create database name;         # 创建数据库

select 列名称 from 表名称;    # 查询

show grants for repl;         # 查看用户权限

show processlist;             # 查看mysql进程

select user();                # 查看所有用户

show slave status\G;          # 查看主从状态

show variables;               # 查看所有参数变量

show table status             # 查看表的引擎状态

select host,user,password from user;            # 查询用户权限 先use mysql

create table ka(ka_id varchar(6),qianshu int);  # 创建表

SHOW VARIABLES LIKE 'character_set_%';          # 查看系统的字符集和排序方式的设定

show variables like '%timeout%';                # 查看超时(wait_timeout)

delete from user where user='';                 # 删除空用户

delete from user where user='sss' and host='localhost' ;    # 删除用户

ALTER TABLE mytable ENGINE = MyISAM ;                       # 改变现有的表使用的存储引擎

SHOW TABLE STATUS from  库名  where Name='表名';            # 查询表引擎

CREATE TABLE innodb (id int, title char(20)) ENGINE = INNODB                     # 创建表指定存储引擎的类型(MyISAM或INNODB)

grant replication slave on *.* to '用户'@'%'identified by '密码';               # 创建主从复制用户

ALTER TABLE player ADD INDEX weekcredit_faction_index (weekcredit, faction);     # 添加索引

alter table name add column accountid(列名)  int(11) NOT NULL(字段不为空);       # 插入字段

增加MySQL用户{

   格式:grant select on 数据库.* to 用户名@登录主机 identified by "密码"

  例1、增加一个用户user_1密码为123,让他可以在任何主机上登录,并对所有数据库有查询、插入、修改、删除的权限。首先用以root用户连入MySQL,然后键入以下命令:

mysql> grant select,insert,update,delete on *.* touser_1@"%" Identified by "123";

mysql>flush privileges;

  例1增加的用户是十分危险的,如果知道了user_1的密码,那么他就可以在网上的任何一台电脑上登录你的MySQL数据库并对你的数据为所欲为了,解决办法见例2。

例2、增加一个用户user_2密码为123,让此用户只可以在localhost上登录,并可以对数据库aaa进行查询、插入、修改、删除的操作(localhost指本地主机,即MySQL数据库所在的那台主机),

这样用户即使用知道user_2的密码,他也无法从网上直接访问数据库,只能通过 MYSQL主机来操作aaa库。

mysql>grant select,insert,update,delete on aaa.* touser_2@localhostidentified by "123";

   用新增的用户如果登录不了MySQL,在登录时用如下命令:

   mysql -u user_1 -p -h 192.168.113.50 (-h后跟的是要登录主机的ip地址)

}

登录mysql的命令{

# 格式: mysql -h 主机地址 -u 用户名 -p 用户密码

mysql -h110.110.110.110 -P3306 -uroot -p

mysql -uroot -p -S /data1/mysql5/data/mysql.sock -A  --default-character-set=GBK

}

shell执行mysql命令{

mysql -u$username -p$passwd -h$dbhost -P$dbport -A -e "

use $dbname;

delete from data where date=('$date1');

"    # 执行多条mysql命令

mysql -uroot -p -S mysql.sock -e "use db;alter table gift add column accountid  int(11) NOT NULL;flush privileges;"    # 不登陆mysql插入字段

  }

 备份数据库{

mysqldump -h host -u root -p --default-character-set=utf8 --hex-blob   dbname >dbname_backup.sql               # 不包括库名,还原需先创建库,在use

mysqldump -h host -u root -p --database --default-character-set=utf8 --hex-blob   dbname >dbname_backup.sql    # 包括库名,还原不需要创建库

/bin/mysqlhotcopy -u root -p    # mysqlhotcopy只能备份MyISAM引擎

mysqldump -u root -p -S mysql.sock --default-character-set=utf8 --hex-blob db table1 table1  > /data/db.sql    # 备份表

mysqldump -uroot -p123  -d database > database.sql    # 备份数据库结构

innobackupex --user=root --password="" --defaults-file=/data/mysql5/data/my_3306.cnf --socket=/data/mysql5/data/mysql.sock --slave-info --stream=tar --tmpdir=/data/dbbackup/temp /data/dbbackup/ 2>/data/dbbackup/dbbackup.log | gzip 1>/data/dbbackup/db50.tar.gz

# xtrabackup备份需单独安装软件 优点: 速度快,压力小,可直接恢复主从复制

}

还原数据库{

mysql -h host -u root -p dbname < dbname_backup.sql

source 路径.sql   # 登陆mysql后还原sql文件

}

赋权限{

# 指定IP: $IP  本机: localhost   所有IP地址: %   # 通常指定多条

grant all on zabbix.* touser@"$IP";             # 对现有账号赋予权限

grant select on database.* touser@"%" Identified by "passwd";     # 赋予查询权限(没有用户,直接创建)

grant all privileges on database.* touser@"$IP" identified by 'passwd';         # 赋予指定IP指定用户所有权限(不允许对当前库给其他用户赋权限)

grant all privileges on database.* touser@"localhost" identified by 'passwd' with grant option;   # 赋予本机指定用户所有权限(允许对当前库给其他用户赋权限)

grant select, insert, update, delete on database.* touser@'ip'identifiedby "passwd";   # 开放管理操作指令

revoke all on *.* fromuser@localhost;     # 回收权限

  }

 更改密码{

update user set password=password('passwd') where user='root';

flush privileges;

mysqladmin -u root password 'xuesong'

  }

 mysql忘记密码后重置{

cd /data/mysql5

/data/mysql5/bin/mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

update user set password=password('123123') where user='root';

}

mysql主从复制失败恢复{

slave stop;

reset slave;

change master to master_host='10.11.241.126',master_port=3306,master_user='root',master_password='passwd',master_log_file='master-bin.00009,master_log_pos=98,master_connect_retry=60';

slave start;

}

}

你可能感兴趣的:(Mysql 常用管理基础命令(学习笔记四))