mysql用户权限管理和增删改查操作
mysql使用上一篇的安裝的mysql。啟動mysql服務后直接就能連到mysql服務器上。
#?mysqlWelcome?to?the?MySQL?monitor.????Commands?end?with?;?or?\g.
Your?MySQL?connection?id?is?1
Server?version:?5.5.25-log?Source?distribution
Copyright?(c)?2000,?2010,?Oracle?and/or?its?affiliates.?All?rights?reserved.
This?software?comes?with?ABSOLUTELY?NO?WARRANTY.?This?is?free?software,
and?you?are?welcome?to?modify?and?redistribute?it?under?the?GPL?v2?license
Type?'help;'?or?'\h'?for?help.?Type?'\c'?to?clear?the?current?input?statement.
mysql>
1>mysql用戶
此時你會發現mysql用戶密碼為空。(一個完整的mysql用戶是由倆部分組成用戶名+主機名);mysql>?use?mysql;
Database?changed
mysql>?select?Host,User,Password?from?user;
+-----------------------+------+----------+
|?Host????????????????????????????????????|?User?|?Password?|
+-----------------------+------+----------+
|?localhost?????????????????????????|?root?|????????????????????|
|?localhost.localdomain?|?root?|????????????????????|
|?127.0.0.1?????????????????????????|?root?|????????????????????|
|?::1?????????????????????????????????????|?root?|????????????????????|
|?localhost?????????????????????????|????????????|????????????????????|
|?localhost.localdomain?|????????????|????????????????????|
+-----------------------+------+----------+
6?rows?in?set?(0.02?sec)
這樣會給數據庫帶來很大的危害,所以裝完一個數據,什么都不做,先加密碼并把不使用的賬戶都刪掉。對mysql用戶操作命令如下:
mysql>?delete?from?mysql.user?where?user='';
Query?OK,?2?rows?affected?(0.04?sec)
ysql>?drop?user?'root'@'::1';
Query?OK,?0?rows?affected?(0.02?sec)
mysql>?delete?from?mysql.user?where?user='root'?and?host='localhost.localdomain';
Query?OK,?1?row?affected?(0.00?sec)
進行以上操作后再次查看:
mysql>?select?Host,User,Password?from?user;
+-----------+------+----------+
|?Host??????|?User?|?Password?|
+-----------+------+----------+
|?localhost?|?root?|??????????|
|?127.0.0.1?|?root?|??????????|
+-----------+------+----------+
2?rows?in?set?(0.00?sec)
下面就要為需要的用戶添加密碼。首先介紹下服務器端的管理工具mysqladmin。
??--mysqladmin非交互式工具,用于創建,刪除數據庫
????--mysqladmin?create?mydb2
????--mysqldamin?drop?mydb2
????--mysqladmin?status????
????--mysqladmin?extended-status顯服務器擴展狀態信息?
????--mysqladmin?flush-hosts????清空dns等狀態信息
????--mysqladmin?flush-logs?做日志滾動的
????--mysqladmin?flush-privileges?重讀數據文件
????--mysqladmin?flush-status?重置服務器狀態信息
????--mysqladmin?flush-tables?關閉當前打開的表(等待正在使用表操作完后關閉)
????--mysqladmin?flush-threads?重置線程的
????--mysqladmin?kill?
????--mysqladmin?processlist?顯示主機上處于活動狀態的線程
????--?mysqladmin?refresh?相當于執行mysqladmin?flush-hosts?和mysqladmin?flush-logs
????--?mysqladmin?shutdown關閉mysql服務器
????--mysqladmin?start-slave啟動從服務器的
????--mysqladmin?stop-slave?關閉重服務器
????--mysqladmin?variables?顯示服務器全局變量及其值使用mysqladmin給mysql用戶添加密碼。
#?mysqladmin?-uroot?password?'redhat'
此刻再執行
[root@localhost?~]#?mysql
ERROR?1045?(28000):?Access?denied?for?user?'root'@'localhost'?(using?password:?NO)
[root@localhost?~]#?mysql?-uroot?-predhat
mysql>?use?mysql
Database?changed
mysql>?select?Host,User,Password?from?user;
+-----------+------+-------------------------------------------+
|?Host??????|?User?|?Password??????????????????????????????????|
+-----------+------+-------------------------------------------+
|?localhost?|?root?|?*84BB5DF4823DA319BBF86C99624479A198E6EEE9?|
|?127.0.0.1?|?root?|???????????????????????????????????????????|
+-----------+------+-------------------------------------------+
2?rows?in?set?(0.00?sec)
發現只為root@localhost用戶添加密碼,如果想為127.0.0.1添加密碼使用剛才那種方式,是會報錯的。所以使用mysql交互式命令修改添加密碼是個不錯的選擇。
mysql>?set?password?for?'root'@'127.0.0.1'?=?password('redhat');
Query?OK,?0?rows?affected?(0.00?sec)
mysql>?update?user?set?password=password('')?where?host='127.0.0.1';
Query?OK,?1?row?affected?(0.00?sec)
Rows?matched:?1??Changed:?1??Warnings:?0
修改用戶權限后需要把權限刷新到內存中。
mysql>?flush?privileges;
Query?OK,?0?rows?affected?(0.00?sec)
mysql還有一種特殊的添加密碼方式--授權
>GRANT?REPLICATION?SLAVE,RELOAD,SUPER?ON?*.*?TO?BACKUSER@192.168.2.106?IDENTIFIED?BY?'redhat';
授與admin用戶從任何其它主機發起的訪問GRANT?ALL?PRIVILEGES?ON?*.*?TO?'admin'@'%'?IDENTIFIED?BY?'angus'?WITH?GRANT?OPTION;
給用戶賦權可以分為以下幾種:
select,insert,update,delete,create,drop,index,alter,GRANT,references,reload,shutdown,process,file等14個權限??
grant?普通數據用戶,查詢、插入、更新、刪除?數據庫中所有表數據的權限??
grant?select,?insert,?update,?delete?on?db1.*?to?user_name@’%’?;??
grant?數據庫開發人員,創建表、索引、視圖、存儲過程、函數...等權限??
grant?創建、修改、刪除?MySQL?數據表結構權限??
grant?create,?alter,?drop?on?db1.*?to?user_name@’%’;??
?grant?操作?MySQL?外鍵,索引權限??
grant?index,references?on?db1.*?to?user_name@’%’;???
grant?操作?MySQL?臨時表權限??
grant?create?temporary?tables?on?db1.*?to?user_name@’%’;???
grant?高級?DBA?管理?MySQL?中所有數據庫的權限,并能把權限賦予給別人??
GRANT?ALL?PRIVILEGES?ON?*.*?TO?'admin'@'%'?IDENTIFIED?BY?'angus'?WITH?GRANT?OPTION;?
找mysql的root用戶密碼,關閉mysql,在啟動mysqld的時候加上--skip-grant-tables,為了安全也要加上--skip-network
#service??mysql??start??--skip-grant-tables?
mysql>?update?mysql.user?set?password=password('redhat')?where?user=?'root';
Query?OK,?0?rows?affected?(0.01?sec)
Rows?matched:?2??Changed:?0??Warnings:?0
(在這只能用update命令,不能使用insert等其他命令修改)
2>mysql?數據庫與表操作
創建數據庫,表并查看表結構。
mysql>?create?database?mydb;??
Query?OK,?1?row?affected?(0.00?sec)??
mysql>?create?table?mydb.user?(Name?char(20),Age?tinyint?unsigned);??
Query?OK,?0?rows?affected?(0.09?sec)??
mysql>?desc?mydb.user;??
+-------+---------------------+------+-----+---------+-------+??
|?Field?|?Type????????????????|?Null?|?Key?|?Default?|?Extra?|??
+-------+---------------------+------+-----+---------+-------+??
|?Name??|?char(20)????????????|?YES??|?????|?NULL????|???????|??
|?Age???|?tinyint(3)?unsigned?|?YES??|?????|?NULL????|???????|??
+-------+---------------------+------+-----+---------+-------+?
創建表時候指定默認存儲引擎
mysql>?create?table?mydb.user?(Name?char(20),Age?tinyint?unsigned)?engine=myisam;??
Query?OK,?0?rows?affected?(0.02?sec)?
同學表:
ID?姓名?性別?年齡?課程代碼?老師編號老師表:
ID?姓名?性別?年齡?職稱?課程代碼課程表:
ID??課程名稱
mysql>?use?mydb;??
Database?changed??
mysql>?create?table?stu?(??
????->?SID?int?unsigned?not?null?auto_increment?primary?key,??
????->?Name?varchar(50)?not?null,??
????->?Gender?enum('F','M')?not?null?default?'M',??
????->?Age?tinyint?unsigned,??
????->?CID?int?unsigned,??
????->?TID?int?unsigned?);??
Query?OK,?0?rows?affected?(0.01?sec)??
mysql>?desc?stu;??
+--------+---------------------+------+-----+---------+----------------+??
|?Field??|?Type????????????????|?Null?|?Key?|?Default?|?Extra??????????|??
+--------+---------------------+------+-----+---------+----------------+??
|?SID????|?int(10)?unsigned????|?NO???|?PRI?|?NULL????|?auto_increment?|??
|?Name???|?varchar(50)?????????|?NO???|?????|?NULL????|????????????????|??
|?Gender?|?enum('F','M')???????|?NO???|?????|?M???????|????????????????|??
|?Age????|?tinyint(3)?unsigned?|?YES??|?????|?NULL????|????????????????|??
|?CID????|?int(10)?unsigned????|?YES??|?????|?NULL????|????????????????|??
|?TID????|?int(10)?unsigned????|?YES??|?????|?NULL????|????????????????|??
+--------+---------------------+------+-----+---------+----------------+??
mysql>?create?table?teacher?(?TID?int?unsigned?not?null?auto_increment?primary?key,?Name?varchar(50)?not?null,?Gender?enum('F','M'),?CID?int?unsigned);??
Query?OK,?0?rows?affected?(0.03?sec)??
mysql>?desc?teacher;??
+--------+------------------+------+-----+---------+----------------+??
|?Field??|?Type?????????????|?Null?|?Key?|?Default?|?Extra??????????|??
+--------+------------------+------+-----+---------+----------------+??
|?TID????|?int(10)?unsigned?|?NO???|?PRI?|?NULL????|?auto_increment?|??
|?Name???|?varchar(50)??????|?NO???|?????|?NULL????|????????????????|??
|?Gender?|?enum('F','M')????|?YES??|?????|?NULL????|????????????????|??
|?CID????|?int(10)?unsigned?|?YES??|?????|?NULL????|????????????????|??
+--------+------------------+------+-----+---------+----------------+??
4?rows?in?set?(0.00?sec)??
mysql>?create?table?course(??
????->?CID?int?unsigned?not?null?auto_increment?primary?key,??
????->?Course?varchar(100)?not?null?);??
Query?OK,?0?rows?affected?(1.27?sec)??
mysql>?desc?course;??
+--------+------------------+------+-----+---------+----------------+??
|?Field??|?Type?????????????|?Null?|?Key?|?Default?|?Extra??????????|??
+--------+------------------+------+-----+---------+----------------+??
|?CID????|?int(10)?unsigned?|?NO???|?PRI?|?NULL????|?auto_increment?|??
|?Course?|?varchar(100)?????|?NO???|?????|?NULL????|????????????????|??
+--------+------------------+------+-----+---------+----------------+??
2?rows?in?set?(0.00?sec)?
mysql> create table tutor like teacher; Query OK, 0 rows affected (0.05 sec) mysql> desc tutor; +--------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+------------------+------+-----+---------+----------------+ | TID | int(10) unsigned | NO | PRI | NULL | auto_increment | | Name | varchar(50) | NO | | NULL | | | Gender | enum('F','M') | YES | | NULL | | | CID | int(10) unsigned | YES | | NULL | | +--------+------------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec)復制表結構加數據
mysql> create table kecheng select * from course; Query OK, 4 rows affected (0.02 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> select * from kecheng; +-----+---------------------+ | CID | Course | +-----+---------------------+ | 1 | kuihuabaodian | | 2 | xianglongshibazhang | | 3 | qiankundaluoyi | | 4 | hamagong | +-----+---------------------+ 4 rows in set (0.00 sec) mysql> desc kecheng; +--------+------------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+------------------+------+-----+---------+-------+ | CID | int(10) unsigned | NO | | 0 | | | Course | varchar(100) | NO | | NULL | | +--------+------------------+------+-----+---------+-------+ 2 rows in set (0.01 sec) mysql> desc course; +--------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+------------------+------+-----+---------+----------------+ | CID | int(10) unsigned | NO | PRI | NULL | auto_increment | | Course | varchar(100) | NO | | NULL | | +--------+------------------+------+-----+---------+----------------+ 2 rows in set (0.01 sec)數據庫修改表操作
mysql> alter table tutor add Title varchar(100) after name; Query OK, 0 rows affected (0.06 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc tutor; +--------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+------------------+------+-----+---------+----------------+ | TID | int(10) unsigned | NO | PRI | NULL | auto_increment | | Name | varchar(50) | NO | | NULL | | | Title | varchar(100) | YES | | NULL | | | Gender | enum('F','M') | YES | | NULL | | | CID | int(10) unsigned | YES | | NULL | | +--------+------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) ######只改字段定義不改名字###### mysql> alter table tutor modify gender enum('F','M') default 'M'; Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc tutor; +--------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+------------------+------+-----+---------+----------------+ | TID | int(10) unsigned | NO | PRI | NULL | auto_increment | | Name | varchar(50) | NO | | NULL | | | Title | varchar(100) | YES | | NULL | | | gender | enum('F','M') | YES | | M | | | CID | int(10) unsigned | YES | | NULL | | +--------+------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) ######改名字要用change###### mysql> alter table tutor change gender Sex enum('F','M') default 'M'; Query OK, 0 rows affected (0.04 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> desc tutor; +-------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+----------------+ | TID | int(10) unsigned | NO | PRI | NULL | auto_increment | | Name | varchar(50) | NO | | NULL | | | Title | varchar(100) | YES | | NULL | | | Sex | enum('F','M') | YES | | M | | | CID | int(10) unsigned | YES | | NULL | | +-------+------------------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) ######修改表名###### mysql> alter table tutor rename to teacher; Query OK, 0 rows affected (0.01 sec) mysql> show tables; +----------------+ | Tables_in_mydb | +----------------+ | course | | stu | | teacher | | user | +----------------+ 4 rows in set (0.00 sec) mysql> rename table teacher to tutor; Query OK, 0 rows affected (0.03 sec) mysql> show tables; +----------------+ | Tables_in_mydb | +----------------+ | course | | stu | | tutor | | user | +----------------+ 4 rows in set (0.00 sec)
3>mysql數據庫的備份和恢復數據庫備份和恢復 mysql數據庫的備份和還原 備份指定數據庫 mysqldump -hhostname -uusername -ppassword databasename >backupfile.sql 壓縮備份指定數據庫 mysqldump -hhostname -uusername -ppassword databasename |gzip>backupfile.sql.gz 備份指定數據庫指定的表 mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 >backupfile.sql 備份多個數據庫 mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3>multibackupfile.sql 備份數據庫結構 mysqldump –no-data –databases databasename1 databasename2 databasename3 > structurebackupfile.sql 備份所以數據庫 mysqldump –all-databases>allbackupfile.sql 備份所以數據庫并標記binlog位置 mysqldump -hlocalhost -uroot -p --all-databases --single-transaction --master-data=2 > /root/all.sql mysql恢復 mysql -hhostname -uusername -ppassword databasename <backupfile.sql gunzip<backupfile.sql.gz|mysql -uusername -ppassword databasename mysqldump -uusername -ppassword databasename|mysql –host=*.*.*.* -C databasename>mysql?日志錯誤日志:服務器啟動和關閉時產生的信息;服務器運行中產生的錯誤的信息;事件調度運行一個事件時產生的信息;在從服務器上啟動從服務器進程產生的信息.
(不把日志放在數據目錄下,可以在配置文件中指定錯誤日志的位置?log-error=/var/log/mysqld_err,但是這個文件對與mysql用戶有讀寫權限)查看當前的錯誤日志的位置可以使用mysql>?show?global?variables?like?'%log_error%';
mysql> show global variables like '%log_error%'; +---------------+------------------------------------------+ | Variable_name | Value | +---------------+------------------------------------------+ | log_error | /var/lib/mysql/localhost.localdomain.err | +---------------+------------------------------------------+二進制日志:是以二進制格式記錄的對mysql服務器發起的能夠改變(寫入,刪除,修改)數據庫內容的操作的.常用作做即時點恢復和從服務器復制.
在配置文件中可以定義二進制日志文件存放的位置log-bin=/path/filename;二進制日志格式有--基于行的--基于語句(如果基于語句執行的結果在不同的時間不一樣的情況下要基于行的格式)和混合模式(mysql自動會識別)
"--max_binlog_size"設置binlog?的最大存儲上限,當日志達到該上限時,MySQL?會重新創建一個日志開始繼續記錄.
--binlog-do-db=db_name參數明確告訴MySQL,需要對某個(db_name)數據庫記錄binlog,如果有了"--binlog-do-db=db_name"參數的顯式指定,MySQL?會忽略針對其他
數據庫執行的query,而僅僅記錄針對指定數據庫執行的query.
"--binlog-ignore-db=db_name"與"--binlog-do-db=db_name"完全相反,它顯式指定忽略某個(db_name)數據庫的binlog?記錄.
mysql-bin.index?文件(binary?log?index)的功能是記錄所有Binary?Log?的絕對路徑,保證MySQL?各種線程能夠順利的根據它找到所有需要的Binary?Log?文件.
刪除二進制日志:purge?binary?logs?(慎重)
mysql>show?master?status;用于查看當前系統上正在使用的二進制文件;
mysql>flush?logs;手動滾動使用命令
mysql> show master status; +------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +------------------+----------+--------------+------------------+ | mysql-bin.000002 | 106 | | | +------------------+----------+--------------+------------------+ 1 row in set (0.02 sec) mysql> purge binary logs to 'mysql-bin.000001'; Query OK, 0 rows affected (0.02 sec) mysql>purge binary logs before '2013-3-5 23:00:00';
事務日志:innodB的事務日志,是一種循環日志,主要用于將innodB引擎的隨機IO轉換成順序IO,提高innodB的并發性能的重要手段.
?
慢查詢日志:查詢超時的記錄,默認沒有開啟,慢查日志是我們地位分析服務器性能的重要手段
慢查詢日志slow_query_log和慢查詢日志存放的位置slow_query_log_file=/path/fielname,慢查超時時間long_query_time=num
?
中繼日志:在復制中用到。
默認日志都是記錄在文件中,也可以記錄在數據庫中-->需要修改log_output=[file,table]
?
".ibd"文件和ibdata?文件這兩種文件都是存放Innodb?數據的文件,之所以有兩種文件來存放Innodb?的數據(包括索引),是因為Innodb?的數據存儲方式能夠通過配置來決定是使用共享表空間存放存儲數據,還是獨享表空間存放存儲數據。獨享表空間存儲方式使用“.ibd”文件來存放數據,且
每個表一個“.ibd”文件,文件存放在和MyISAM?數據相同的位置。如果選用共享存儲表空間來存放數據,則會使用ibdata?文件來存放,所有表共同使用一個(或者多個,可自行配
置)ibdata?文件。ibdata?文件可以通過innodb_data_home_dir?和innodb_data_file_path兩個參數共同配置組成,?innodb_data_home_dir?配置數據存放的總目錄,?而
innodb_data_file_path?配置每一個文件的名稱。當然,?也可以不配置innodb_data_home_dir?而直接在innodb_data_file_path?參數配置的時候使用絕對路徑來
完成配置。innodb_data_file_path?中可以一次配置多個ibdata?文件。文件可以是指定大小,也可以是自動擴展的,但是Innodb?限制了僅僅只有最后一個ibdata?文件能夠配置成自
動擴展類型。當我們需要添加新的ibdata?文件的時候,只能添加在innodb_data_file_path配置的最后,而且必須重啟MySQL?才能完成ibdata?的添加工作。不過如果我們使用獨享表
空間存儲方式的話,就不會有這樣的問題,但是如果要使用裸設備的話,每個表一個裸設備,可能造成裸設備數量非常大,而且不太容易控制大小,實現比較困難,而共享表空間卻不會
有這個問題,容易控制裸設備數量。我個人還是更傾向于使用獨享表空間存儲方式。當然,兩種方式各有利弊,看大家各自應用環境的側重點在那里了。
?
轉載于:https://blog.51cto.com/angus717/974835
總結
以上是生活随笔為你收集整理的mysql用户权限管理和增删改查操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 乳腺结节治疗方法有哪些(颚口线虫病的治疗
- 下一篇: 电脑发生错误声音怎么解决方法 电脑出现错