13.1-13.3 设置更改root密码,连接MySQL,MySQL常用命令
13.1 設置更改root密碼
大綱
準備工作:
1 啟動mysql服務
[root@AliKvn ~]# /etc/init.d/mysqld start
Starting MySQL. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ ?OK ?]
2 設置MySQL環境變量
因為#mysql命令需要使用絕對路徑/ /usr/local/mysql/bin/mysql,這樣太麻煩了,
所以需要更改環境變量PATH,增加mysql絕對路徑。
# ls /usr/local/mysql/bin/mysql
/usr/local/mysql/bin/mysql
2.1 添加環境變量
[root@AliKvn ~]# export PATH=$PATH:/usr/local/mysql/bin/
測試使用mysql命令
2.2 使命令用久生效 把命令放在profile的最后面
[root@AliKvn ~]# vim /etc/profile
unset -f pathmunge
export PATH=$PATH:/usr/local/mysql/bin/
~ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
~ ? ? ? ??
source /etc/profile 使其用久生效。
[root@AliKvn ~]# source /etc/profile
3 進入mysql
-u指定用戶,-p指定密碼(如果無密碼,直接回車進入)
[root@AliKvn ~]# mysql -uroot -p
mysql> quit
Bye
4 因為MySQL第一次進去是不需要密碼的,比較危險,所以需要設置密碼
[root@AliKvn ~]# mysqladmin -uroot password 'aminglinux.1'
Warning: Using a password on the command line interface can be insecure.
測試指定密碼進入
[root@AliKvn ~]# mysql -uroot -p
4.1 更改密碼
[root@AliKvn ~]# mysqladmin -uroot -p'aminglinux.1' password 'aminglinux.2'
Warning: Using a password on the command line interface can be insecure.
5 密碼重置(在沒有root密碼的時候修改root密碼)
在[mysqld]增加skip-grant,此配置的意義就是忽略授權,加入配置后,不需要登錄密碼即可進入MySQL
#vi /etc/my.cnf?
[root@AliKvn ~]# vim /etc/my.cnf
[mysqld]
skip-grant
datadir=/data/mysql
socket=/tmp/mysql.sock
5.1 配置完成后,重啟服務使其生效。
[root@AliKvn ~]# /etc/init.d/mysqld restart?
Shutting down MySQL.. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ ?OK ?]
Starting MySQL. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ ?OK ?]
5.2 測試
[root@AliKvn ~]# mysql -uroot
直接進入,無需任何認證。
mysql> ?
5.3 使用mysql庫
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
5.4 進入密碼表
mysql> select password from user ;
+-------------------------------------------+
| password ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
+-------------------------------------------+
| *C2586DB1E5698A5F1DC57808497DA087CC1EF767 |
| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? |
+-------------------------------------------+
6 rows in set (0.01 sec)
5.5 在密碼表輸入命令,更改密碼
mysql> update user set password=password('aminglinux') where user='root';
Query OK, 4 rows affected (0.00 sec)
Rows matched: 4 ?Changed: 4 ?Warnings: 0
密碼更新成功,quit退出mysql
mysql> quit
Bye
6 修改完成后,需要把跳過驗證參數(skip-grant)刪除,不然會發生很大安全隱患。
[root@AliKvn ~]# vim /etc/my.cnf
[mysqld]
datadir=/data/mysql
socket=/tmp/mysql.sock
修改后,重啟服務
[root@AliKvn ~]# /etc/init.d/mysqld restart?
Shutting down MySQL.. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ ?OK ?]
Starting MySQL. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?[ ?OK ?]
6.1 用新密碼測試登錄MySQL
[root@AliKvn ~]# mysql -uroot -paminglinux
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. ?Commands end with ; or \g.
13.2 連接MySQL
1 本地 ip:port連接
[root@AliKvn ~]# mysql -uroot -paminglinux -h127.0.0.1 -P3306
2 還可以利用socket去連接。MySQL的socket在/tmp/mysql.sock
檢查mysql.sock的監聽狀態
[root@AliKvn ~]# !ps
ps aux |grep mysql.sock
socket連接
[root@AliKvn ~]# mysql -uroot -paminglinux -S/tmp/mysql.sock
這種情況只適合用在本機上(這種方法和第一種是一樣的,也是默認的連接方法)
3 連接MySQL順便操作一些命令
[root@AliKvn ~]# mysql -uroot -paminglinux -e "show databases"
Warning: Using a password on the command line interface can be insecure.
+--------------------+
| Database? ? ? ? ? ?|
+--------------------+
| information_schema |
| mysql? ? ? ? ? ? ? |
| performance_schema |
| test? ? ? ? ? ? ? ?|
+--------------------+
進入MySQL,然后執行#show databases命令。
這種情況適用在shell腳本,例如監聽MySQL的連接數。
13.3 MySQL常用命令
慎記,MySQL里的命令在Linux上是執行不到的。但是通過mysql -e "命令" 可以指定執行。
在MySQL里面執行命令,以?;?結束。
連接MySQL
[root@AliKvn ~]# mysql -uroot -paminglinux
查詢庫 show databases;
切換庫 use mysql;
查看庫里的表 show tables;
查看整張表的內容 select * from tb_name;
查看表里的字段 desc tb_name;
字段,表,庫三者的關系,庫是由表組成,表是有字段組成。
操作:
查看user字段,
1 先切換庫
use mysql;
mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
2 再查看user字段,
mysql> desc user;
查看建表語句 show create table tb_name\G;
查看當前用戶 select user();
mysql> select user();
+----------------+
| user()? ? ? ? ?|
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)
當前用戶是localhost,其實127.0.0.1連接進來也是localhost,因為127.0.0.1就是localhost.
接下來試試用本機ip連接看看
[root@AliKvn ~]# mysql -h172.18.171.157 -paminglinux
mysql> select user();
+-------------+
| user()? ? ? |
+-------------+
| root@AliKvn |
+-------------+
1 row in set (0.00 sec)
AliKvn是本機的主機名,而172.18.171.157被傳解析了,所以AliKvn是被172.18.171.157解析出來的。
MySQL的命令歷史記錄存在/root/.mysql_history?
查看方法 less .mysql_history?
?
查看當前使用的數據庫 select databsase();
mysql> select database();
+------------+
| database() |
+------------+
| NULL? ? ? ?|
+------------+
1 row in set (0.00 sec)
NULL為空,例如切換到mysql庫下,這里不會顯示空。
mysql> use mysql
Database changed
mysql>? select database();
+------------+
| database() |
+------------+
| mysql? ? ? |
+------------+
1 row in set (0.00 sec)
創建庫 create database db1;
mysql> create database db1;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database? ? ? ? ? ?|
+--------------------+
| information_schema |
| db1? ? ? ? ? ? ? ? |
| mysql? ? ? ? ? ? ? |
| performance_schema |
| test? ? ? ? ? ? ? ?|
+--------------------+
5 rows in set (0.00 sec)
創建表 create table t1(`id` int(4), `name` char(40));
1 先切換db1庫
mysql> use db1;
Database changed
2 再創建表t1
mysql> create table t1(`id` int(4), `name` char(40));
Query OK, 0 rows affected (0.02 sec)
3 查看創建的表
mysql> show create table t1\G
*************************** 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.00 sec)
定義utf8格式?
操作:
1 刪除表
drop table t1;
mysql> drop table t1;
Query OK, 0 rows affected (0.01 sec)
2 定義utf8格式
mysql> create table t1(`id` int(4), `name` char(40)) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Query OK, 0 rows affected (0.02 sec)
查看剛剛創建t1的表(utf8)
mysql> show create table t1\G;
*************************** 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
查看當前數據庫版本 select version();
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.6.35? ? |
+-----------+
1 row in set (0.00 sec)
?查看數據庫狀態 show status;
將常用的數據列出來
查看各參數 show variables;
mysql> show variables;
查看指定參數,%表示通配符
mysql> show variables like 'max_connect%';
+--------------------+-------+
| Variable_name? ? ? | Value |
+--------------------+-------+
| max_connect_errors | 100? ?|
| max_connections? ? | 151? ?|
+--------------------+-------+
2 rows in set (0.00 sec)
修改參數 set global max_connect_errors=1000;(如果想永久生效,需要修改/etc/my.conf,添加相關配置參數)
mysql> set global max_connect_errors=1000;
Query OK, 0 rows affected (0.00 sec)
mysql> show variables like 'max_connect%';
+--------------------+-------+
| Variable_name? ? ? | Value |
+--------------------+-------+
| max_connect_errors | 1000? |
| max_connections? ? | 151? ?|
+--------------------+-------+
2 rows in set (0.00 sec)
?max_connect_errors 1000? 數值變成了1000
?查看隊列 兩者體驗在info上,full的比較完整。(查看隊列命令用得最多,需要熟練使用)
mysql> show processlist;
+----+------+--------------+------+---------+------+-------+------------------+
| Id | User | Host? ? ? ? ?| db? ?| Command | Time | State | Info? ? ? ? ? ? ?|
+----+------+--------------+------+---------+------+-------+------------------+
| 13 | root | AliKvn:56928 | NULL | Query? ?|? ? 0 | init? | show processlist |
+----+------+--------------+------+---------+------+-------+------------------+
1 row in set (0.00 sec)
這個比較完整查看隊列。
show full processlist;
mysql> show full processlist;
+----+------+--------------+------+---------+------+-------+-----------------------+
| Id | User | Host? ? ? ? ?| db? ?| Command | Time | State | Info? ? ? ? ? ? ? ? ? |
+----+------+--------------+------+---------+------+-------+-----------------------+
| 13 | root | AliKvn:56928 | NULL | Query? ?|? ? 0 | init? | show full processlist |
+----+------+--------------+------+---------+------+-------+-----------------------+
1 row in set (0.00 sec)
轉載于:https://blog.51cto.com/13578154/2113672
總結
以上是生活随笔為你收集整理的13.1-13.3 设置更改root密码,连接MySQL,MySQL常用命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (超详细版)Linux下Hadoop2.
- 下一篇: Python中操作mysql知识(一)