MySQL經常使用操做

MySQL經常使用操做mysql


更改root密碼linux

首先查看MySQL服務有沒有啓動:ps aux |grep mysqlsql

沒啓動把它啓動:/etc/init.d/mysqld startshell

而後用命令登陸mysql:mysql -uroot    quit退出來數據庫

image.png

mysql命令是不能直接在root用戶下用的,由於他在/usr/local/mysql/bin/mysql目錄下,安全

須要更改環境變量PATH,增長mysql絕對路徑:export PATH=$PATH:/usr/local/mysql/bin/服務器

image.png

要想永久生效須要把它放到:vi /etc/profile 配置文件裏,放到最後邊socket

執行:source /etc/profile 環境變量才能生效ide

命令:mysql -uroot -p -p:指定他的密碼,若是密碼爲空直接回車就進來了ui

image.png

怎樣設置root密碼:

mysqladmin -uroot password '123456789' (例如咱們設12345789)

設置完密碼怎樣進入:

方法一:mysql -uroot -p  而後輸入設定的密碼,例123456789  -p參數意思是指定他的密碼

方法二:mysql -uroot -p '123456789' 直接給他指定上密碼

image.png

更改密碼:

例如咱們原來的密碼爲123456789改爲987654321,格式以下

mysqladmin -uroot password '123456789' password '987654321'

密碼重置

 第一步,更改配置文件:vi /etc/my.cnf//增長skip-grant 意思是忽略受權,就是在操做mysql的時候省略輸入密碼這一步

 wKiom1mVTteiSO0hAABmCo9Xj2M973.png 

 第二步,重啓mysql服務:/etc/init.d/mysqld restart

image.png

 第三步,登陸mysql輸命令:mysql -uroot 直接就進來來 不須要密碼

 第四步,切換到mysql庫裏邊更改一個表:use mysql;

image.png

 第五步,輸入命令:update user set password=password('aminglinux') where user='root'; 裏邊橫線部分aminglinux是你要設置的新密碼,更改完quit退出來

image.png

 第六步,在編輯:vi /etc/my.cnf 把skip-grant去掉 由於一直加着它其餘用戶也不須要密碼這樣不安全

image.png

 第七步,重啓:/etc/init.d/mysqld start



鏈接MySQL

 方法有幾種:

 1.鏈接本機:mysql -uroot -p123456   //-u用戶名;-p密碼

 

2.鏈接遠程

好比用A服務器去連接B服務器的mysql,須要輸入遠程的的IP、端口。

-h選項,遠程mysql的IP。-P選項,意思是指定端口

 例如,用本機連3306端口:mysql -uroot -p123456 -h127.0.0.1 -P3306

 

3.利用socket來連接它,這種方法只適合在本機,由於mysql監聽的是3306端口跟socket。-S來指定它的socket

 mysql -uroot -p123456 -S/tmp/mysql.sock

image.png


4.連接mysal以後來操做一些命令 

mysql -uroot -p123456 -e 「show databases」 -e意思是把全部的數據庫都列出來,這種狀況使用在shell腳本里邊

wKiom1mVdqGBZ68-AADytSECJd4294.png



MySQL經常使用命令

 運行mysql的命令必需要先鏈接mysql,在mysql裏邊運行這些命令,在外邊是不能識別的,一樣外邊的命令在裏邊也不能識別。

 進入mysql命令:mysql -uroot -p123456789

 1.查詢庫:show databases

show databases;查看都有什麼數據庫

image.png

 

2.切換庫:use

use mysql;切換到某一個庫下邊,例如mysql庫

image.png

 

3.查看庫裏的表:

show tables;把全部表所有列出來


4.查看錶裏的字段:desc

desc user;後邊跟你要查詢的表,如desc user;


5.查看錶怎麼建立的:show create table

show create table user\G; 命令後邊跟你要查看的表,如user表,\G意思是它的豎排顯示

image.png


6.查看當前用戶:select user();

select user();由於默認登錄的是root

image.png


7.查看當前使用的數據庫:select database();

select database();

image.png

切換一下在查看

image.png


8.建立庫:create database ;

create database db1; (db1,是本身起的庫名字)

image.png

你發現多了一個db1

image.png


9.建立表:

先進入到庫裏邊use db1; 在建立表(例如建立一個叫t1的表):create table t1(`id`  int(4), `name` char(40));

建立完表以後要給他定義字段,第一個字段叫id,格式爲init最長爲4。第二個字段叫name,char字符串,最長爲40

image.png

還能夠定義後邊的字段

image.png


10.刪除表:

drop table 後邊跟表的名字

image.png

 

11.查看當前數據庫版本:

select version();

image.png

12.查看數據庫狀態:show status;

13.查看各參數:show variables; 


14.查看指定的參數

例如你想查看但記不清了,只知道前邊,那就能夠採用通配來匹配%,例如:show variables like 'max_connect%';

image.png

例如slow相關的

image.png


15.修改參數:

set global max_connect_errors=1000;例如修改max_connect_errors爲1000

image.png


16.查看隊列:

show processlist; 至關於在linux裏邊用ps或者top來查看進程,能夠看到哪些用戶在連它,用戶都在進行什麼操做,很重要

image.png

 更完整的查看:show full processlist;

image.png



MySQL建立用戶以及受權

怎樣設置新用戶以及密碼 

grant all on *.* to 'user1' identified by 'passwd'; user1是用戶;passwd意思是你本身設置的密碼

image.png

 建立:grant all on *.* to 'user1'@'127.0.0.1' identified by 'passwd';

 登陸:mysql -uuser1 -ppasswd -h127.0.0.1 由於他默認使用的socket,因此要指定-h

給他受權localhost這樣就不用-h指定IP了 

grant all on *.* to 'user1'@'localhost' identified by 'passwd'; 

 mysql -uuser1 -ppasswd

 根據具體的權限去受權:grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1' identified by 'passwd';

 針對全部的IP去受權:grant all on db1.* to 'user3'@'%' identified by 'passwd';

 查看全部的受權:show grants;  默認查看的是root,由於root沒有受權因此是空的

查看指定用戶的受權

須要指定用戶加IP:show grants for user2@192.168.133.1;


經常使用SQL語句

 怎麼查看其它庫裏的表:select count(*) from mysql.user; 好比查看mysql庫裏的user表

image.png

 查看庫裏全部的內容:select * from mysql.db; 這個*通常不要用,由於庫裏的東西有不少,耗費時間

 查看一個字段:select db from mysql.db;

image.png

 查看兩個字段:select db,user from mysql.db;

image.png

 模糊查詢:select * from mysql.db where host like '192.168.%'\G;好比查詢以192.168.開頭的ip字段

 插入內容數據:insert into db1.t1 values (1, 'abc');

image.png

name是個字符串儘可能要加的上單引號'',數字能夠不加

image.png

image.png

 三行都生效:update db1.t1 set name='aaa' where id=1;

image.png

刪除指定id的表:delte from db1.t1 where id=1;

 清空一個表:truncate table db1.t1; 只清空表裏的內容,而表裏的結構還留着。後邊跟表的名字例如db1庫裏的t1表

image.png

 直接刪除表:drop table db1.t1;

image.png

 把數據庫也刪了:drop database db1;

image.png

注意:刪除表和清空表的操做盡可能不要作!!!!!!!!!!!!!!!!!!



MySQL數據庫的備份與恢復

 備份庫:mysqldump -uroot -p123456 mysql > /tmp/mysql.sql     -u指定用戶;-p指定密碼;後邊跟你要備份的庫(如mysql),而後把內容重定向到一個文件裏,這個文件就咱們備份的庫文件

  image.png

 

恢復庫 mysql -uroot -p123456 mysql < /tmp/mysql.sql

還能夠恢復到其餘的庫,好比mysql2,咱們先建立一個mysql2庫,命令:

mysql -uroot -paminglinux -e "create database mysql2"

image.png

而後再把它恢復過去

image.png

 

備份表 mysqldump -uroot -p123456 mysql user > /tmp/user.sql 在庫後邊加上表名字就行,先庫在表,例如mysql庫裏的user表

image.png


 恢復表 mysql -uroot -p123456 mysql < /tmp/user.sql 只須要寫一個庫的名字就能夠,不須要跟表的名字

image.png

 

備份全部庫 mysqldump -uroot -p -A >/tmp/123.sql   -A表示全部

image.png

 

只備份表結構 mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql

相關文章
相關標籤/搜索