1. 程式人生 > >五十二、設置更改root密碼、連接MySQL、MYSQL常用命令

五十二、設置更改root密碼、連接MySQL、MYSQL常用命令

設置更改root密碼 連接MySQL MySQL常用命令

五十二、設置更改root密碼、連接MySQL、MYSQL常用命令

一、設置更改root密碼

root用戶是MySQL的超級管理員用戶,這個root和系統的root並不是一個用戶,需要區分開,也可以創建普通用戶來連接MySQL。

默認的MySQL的root用戶密碼是空的,可以直接連接上。


# ps aux |grep mysql 先檢查mysql有沒有打開

# /etc/init.d/mysqld start

# mysql -uroot

-bash: mysql: 未找到命令

因為mysql這個命令沒有在環境變量中,所以這個命令不能直接使用。

# ls /usr/local/mysql/bin/mysql mysql命令的路徑

/usr/local/mysql/bin/mysql

# echo $PATH 環境變量中沒有mysql命令的路徑

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

# export PATH=$PATH:/usr/local/mysql/bin/ 更改環境變量,加一個

# mysql -uroot 再使用就可以了

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 1

Server version: 5.6.36 MySQL Community Server (GPL)


Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.


Oracle is a registered trademark of Oracle Corporation and/or its

affiliates. Other names may be trademarks of their respective

owners.


Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql>

要想這條命令永久生效,還要把這條命令放到/etc/profile下面,放到最後面,就可以了。

# source /etc/profile 加完以後,需要執行這條。使變量立即生效。

# mysql -uroot -p //-p,指定root的登錄密碼,現在是空,直接回車。

在這個裏面就可以操作MySQL的行為,先quit退出。

# mysqladmin -uroot password '123456'

Warning: Using a password on the command line interface can be insecure.

警告:在命令行界面上使用密碼可能是不安全的。

再次登錄時就需要輸入登錄密碼了,不然登不進。


知道密碼時更改密碼:

# mysqladmin -uroot -p'123456' password '1234'

Warning: Using a password on the command line interface can be insecure.

這個提示不用管,和上面的設置密碼的一樣。

# mysql -uroot -p'1234' 登錄,指定登錄密碼時加上單引號,防止有些符號命令行無法識別。

不知道密碼時更改密碼:

# vim /etc/my.cnf

[mysqld] 在mysqld這部分

skip-grant 加上這一行,意思是忽略授權,就不用用戶名密碼可以直接登錄了。

datadir=/data/mysql

socket=/tmp/mysql.sock

# /etc/init.d/mysqld restart 重啟服務才能生效

# mysql -uroot 直接回車就進去了,要在裏面更改一個user表。

user表:存用戶密碼的表。

mysql> use mysql; use mysql,切換到mysql庫。

mysql> select * from user; 查看一下這個表。

mysql> select password from user;

+------------------------------------------------------------------------+

| password |

+------------------------------------------------------------------------+

| *A4B6157319038724E3560894F7F932C8886EBFCF |

| 這裏可以看到密碼的加密字符串 |

| |

| |

| |

| |

+------------------------------------------------------------------------+

6 rows in set (0.00 sec)

這個密碼實際上是用password這個函數來生成的,所以改密碼時也需要用這個函數來加密。


用這條命令來更改密碼:

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

Query OK, 4 rows affected (0.08 sec)

Rows matched: 4 Changed: 4 Warnings: 0

這樣密碼就改完了,然後quit退出來,還需要把剛才加的skip-grant刪掉。

# /etc/init.d/mysqld restart

# mysql -uroot -p12345 -p後面不要加空格,加空格就錯了。


二、連接MySQL

# mysql -uroot -p12345 連接本機

# mysql -uroot -p12345 -h127.0.0.1 -P3306

連接遠程,-h指定目標IP,-P指定端口,比如從A服務器連接B服務器的MySQL,這裏以連接本機為示範,如果不指定端口默認就是3306。

# mysql -uroot -p12345 -S/tmp/msyql.sock

使用sock連接,這種情況只適合在本機。

# mysql -uroot -p12345 -e "show databases"

連接MySQL之後操作一些命令,這個命令是把所有的數據庫列出來。這個情況使用在shell腳本裏。


三、MySQL常用命令

查詢庫show databases;

切換庫use mysql;

查看庫裏的表show tables;

查看表裏的字段desc tb_name; 示例:desc user;

查看建表語句show create table tb_name\G; \G:豎排顯示,先頭的select * from user\G;也可以加上\G,顯示就很清晰了。

查看當前用戶select user();

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

有些命令是MySQL裏面的,不能在MySQL外面執行,Linux是無法識別。


# mysql -uroot -p12345 -h192.168.93.130 用別的IP登錄再查看就不是localhost了,會反解析登錄的用戶名。

mysql> select user();

+----------------+

| user() |

+----------------+

| root@MRX |

+----------------+

1 row in set (0.01 sec)


mysql> select database();

+------------+

| database() |

+------------+

| NULL | 當前數據庫是空,當切換到mysql時,顯示的就是mysql。

+------------+

1 row in set (0.00 sec)

mysql命令歷史的文件:.mysql_history


創建庫create database db1;

創建表use db1;create table t1(`id` int(4), `name` char(40));

查看當前數據庫版本select version();

查看數據庫狀態show status;

查看各參數show variables;

查看指定的參數show variables like'max_connect%'; 這裏%是通配。

修改參數set global max_connect_errors=1000;

可以通過修改/etc/my.cnf修改參數,也可以臨時修改在內存中生效。

查看隊列show processlist;show full processlist;

這個就相當於Linux的ps或者top命令,加上full就更完整,查看當前MySQL在幹什麽,哪些用戶在連接,他連接它的時候在執行什麽操作,有沒有鎖表。


mysql> create database db1;

Query OK, 1 row affected (0.29 sec)

mysql> use db1;

Database changed

mysql> create table t1(`id` int(4), `name` char(40));

Query OK, 0 rows affected (0.40 sec)

表名是t1,定義字段id和name,格式是int和char,字符串最長4和40。

mysql> show create table t1\G; 查看t1的建表語句

*************************** 1. row ***************************

Table: t1

Create Table: CREATE TABLE `t1` (

`id` int(4) DEFAULT NULL,

`name` char(40) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=latin1

1 row in set (0.28 sec)


ERROR:

No query specified

InnoDB的引擎,latiin1的字符集,這個都可以自定義。

create table t1(`id` int(4), `name` char(40)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

命令前面加一個#就不會生效了。

mysql> drop table t1; 先刪除這個表

再來執行這條定義字符集的命令:

create table t1(`id` int(4), `name` char(40)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Query OK, 0 rows affected (0.34 sec)

mysql> show create table t1\G; 再查看就顯示的是utf8了。

*************************** 1. row ***************************

Table: t1

Create Table: CREATE TABLE `t1` (

`id` int(4) DEFAULT NULL,

`name` char(40) DEFAULT NULL

) ENGINE=InnoDB DEFAULT CHARSET=utf8

1 row in set (0.00 sec)


ERROR:

No query specified

mysql> select version(); 查看數據庫版本5.6.36

+-----------+

| version() |

+-----------+

| 5.6.36 |

+-----------+

1 row in set (0.00 sec)


五十二、設置更改root密碼、連接MySQL、MYSQL常用命令