mysql默認的是沒有給mysql設置密碼能夠直接登陸mysql
[root@zhangmengjunlinux ~]# mysql -urootlinux
Welcome to the MySQL monitor. Commands end with ; or \g.sql
Your MySQL connection id is 2數據庫
Server version: 5.1.73-log MySQL Community Server (GPL)vim
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.安全
Oracle is a registered trademark of Oracle Corporation and/or itside
affiliates. Other names may be trademarks of their respectivepost
owners.spa
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.3d
mysql>
可是在正常狀況下爲了安全考慮應該給mysql設置一個密碼,用這個命令
[root@zhangmengjunlinux ~]# mysqladmin -uroot password 'zhangmengjun'密碼
咱們再次不用密碼是登陸不了的
[root@zhangmengjunlinux ~]# mysql -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
咱們用密碼登陸,這回能登陸上了
[root@zhangmengjunlinux ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.1.73-log MySQL Community Server (GPL)
Copyright (c) 2000, 2013, 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>
這個時候假如咱們忘記了密碼是什麼,咱們能夠經過一個辦法初始化一下首先要編輯配置文件
[root@zhangmengjunlinux ~]# vim /etc/my.cnf
在這個裏面咱們加入一條 skip_grant 不去受權
保存,從新啓動mysql
[root@zhangmengjunlinux ~]# /etc/init.d/mysqld restart
Shutting down MySQL... SUCCESS!
Starting MySQL.... SUCCESS!
mysql重新啓動完以後就能夠無密碼進去了
而後咱們使用mysql庫
mysql> use mysql 使用mysql庫
Database changed
而後更新一個表新密碼menglei
mysql> update user set password=password ('menglei') where user='root';
Query OK, 3 rows affected (0.06 sec)
Rows matched: 3 Changed: 3 Warnings: 0
mysql>
在這裏三行發生了改變,咱們去看一下
mysql> select * from user where user='root'\G;
*************************** 1. row ***************************
Host: localhost
User: root
Password: *F13236A6862262401791328A4F70F7B2721BF475
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
*************************** 2. row ***************************
Host: zhangmengjunlinux.com
User: root
Password: *F13236A6862262401791328A4F70F7B2721BF475
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
*************************** 3. row ***************************
Host: 127.0.0.1
User: root
Password: *F13236A6862262401791328A4F70F7B2721BF475
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Reload_priv: Y
Shutdown_priv: Y
Process_priv: Y
File_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Show_db_priv: Y
Super_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Execute_priv: Y
Repl_slave_priv: Y
Repl_client_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Create_user_priv: Y
Event_priv: Y
Trigger_priv: Y
ssl_type:
ssl_cipher:
x509_issuer:
x509_subject:
max_questions: 0
max_updates: 0
max_connections: 0
max_user_connections: 0
3 rows in set (0.03 sec)
ERROR:
No query specified
mysql>
這個時候咱們不用密碼也能登上去,咱們要先把配置文件裏的skip_grant去掉
而後重新啓動mysql,輸入新的密碼就能夠登陸了
mysql登陸,本地登錄
[root@zhangmengjunlinux ~]# mysql -uroot -pmenglei
[root@zhangmengjunlinux ~]# mysql -uroot h192.168.140.100 -P3306 -pmenglei
這個時候是登錄不了的,咱們來測一下有沒有監聽192.168.140.100 3306端口,提示不容許去鏈接,由於咱們尚未受權,咱們能夠使用127.0.0.1去試一試,這個受權了
它能夠登錄上去,那咱們怎麼樣去給192.168.140.100受權呢,受權的語句
mysql> grant all on *.* to 'root'@'192.168.140.100' identified by 'menglei';
all是全部的權限 *.*庫 表 @後面跟的是客戶端的IP地址 by後面跟密碼
咱們能夠select看一下
mysql> select * from user where host='192.168.140.100'\G;
mysql> select user();
當本地有多個mysql時候,咱們能夠經過sock登錄
[root@zhangmengjunlinux ~]# mysql -uroot -S /tmp/mysql.sock -p
mysql> show databases;
咱們能夠切換庫
mysql> use mysql;
Database changed
mysql> use discuz;
Database changed
mysql> 那咱們怎麼去看咱們如今在哪一個庫裏面呢
mysql> select database(); 查看在哪一個庫
mysql> select user(); 查看它在哪一個用戶
mysql> select version(); 查看這個用戶的版本
咱們如今使用的是discuz這個庫,看看這個庫裏邊有哪些表呢,關於數據庫有幾個概念,首先是庫,庫下面是表,表下面是行,行下面有一些字段 (庫-表-行-字段);那咱們首先看的是庫
mysql> use discuz 這個命令能夠加分號也能夠不加分號,但其餘的命令須要加
Database changed
看看有哪些表
mysql> show tables;
這是這個庫裏面都有哪些表,咱們還能夠看錶有哪些行(表是怎麼建立的)有包含了哪些字段
mysql> desc pre_common_admincp_cmenu;
desc 描述一個表
咱們也能夠看看這個表示的建立語句
mysql> show create table pre_common_admincp_cmenu\G;
那這個就是pre_common_admincp_cmenu這個表怎麼去建立的
那下面咱們來去建立一個庫
mysql> create database mengjun;
Query OK, 1 row affected (0.02 sec)
mysql> use mengjun;
Database changed
而後建立一個表
mysql> create table tb1 (`id` int(4), `name` char(40)) ENGINE=MyISAM DEFAULT CHARSET=gbk;
Query OK, 0 rows affected (0.07 sec)
建立tb1表 ,id格式是int,長度4位, name格式是char長度是40
mysql> desc tb1;
mysql> show create table tb1\G; 能夠看到建立表的語句
在表裏插入語句
mysql> insert into tb1 values (1, 'mengjun'); 由於有連個字段id 和name因此咱們要分開寫,id是1,name咱們要給mengjun加入‘單引號由於是char
插入完以後咱們select一下看看
mysql> select * from tb1;
那咱們還能夠繼續插入
mysql> insert into tb1 values (2,'menglei');
固然咱們也能夠單獨之插入一個字段
mysql> insert into tb1 (`id`) values(2);
Query OK, 1 row affected (0.00 sec)
你會發現這個時候name變成NULL空了 id 仍是2
mysql> insert into tb1 (`name`) values ('55');
Query OK, 1 row affected (0.00 sec)
咱們也能夠反過來定義先name在id
mysql> insert into tb1 (`name`,`id`) values('55',6);
咱們還能夠更新一個數據
mysql> update tb1 set id=5 where name='55';
下面咱們刪除一行
mysql> delete from tb1 where name='55';
清空一個表可是不能刪除這個表
mysql> truncate table mengjun.tb1;
幹倒一個表
mysql> drop table tb1;
幹倒一個庫
mysql> drop database mengjun;
在上面咱們用過這個受權,其實受權也是建立新的用戶,那咱們講一講其餘相關的概念
mysql> grant all on discuz.* to 'user1'@'192.168.140.%' identified by 'mengjun';
Query OK, 0 rows affected (0.12 sec)
on能夠指定一個庫discuz.跟一個表或許.*全部的表,to 跟用戶名 @跟IP %號表明通配
有時候建立了用戶沒有即時生效,由於數據可能保存在內存裏,尚未到硬盤裏,這個時候須要刷新一下權限
mysql> flush privileges; 刷新權限
Query OK, 0 rows affected (0.00 sec)
mysql> show processlist; 這是查看當前數據有哪些列隊,你這個數據庫若是很忙的話,它可能會有不少的查詢,讓咱們知道這個庫具體在幹些什麼,就行咱們linux系統裏面的ps同樣咱們能夠查看到都有哪些進程,任務在工做。
mysql> show variables;
查看變量,這些參數均可以再/etc/my.cnf裏面去定義它的,那咱們從新更改配置文件以後想讓它生效得重啓mysql的服務,有時候mysql的服務暫時用着它,我不想重啓怎麼辦,能夠再mysql裏邊操做
mysql> set global max_connections=200;
mysql> show variables like 'max_conne%'; like就像是grep
mysql的錯誤日誌在data_dir下,
這裏會看到和hostname同名的一個後面有err這個就是錯誤日誌
mysql> repair table discuz.pre_forum_post;