mysql用户与权限管理笔记_MySQL
bitsCN.com
今天想使用一下李刚那本书上的hibernate的Demo,试出了点问题,过程中就发现mysql的用户管理和权限管理上也有点东西要注意,所以顺便就写一下mysql用户管理和权限管理的笔记。
先说一说mysql的安装:
我们在ubuntu下先安装mysql:
sudo apt-get install mysql-server
安装好了以后呢,我们先用root身份登录到数据库中,我记得安装过程的最后一步里面,如果你在可视化界面下用控制台的话,它好像是会要求你输入root的密码的。不过如果没有也没关系,那mysql就默认root是没有密码的了。
我们可以直接用root登录到数据库中:
$mysql -u root
如果你不使用-u root选项的话,mysql就会默认你是在当前用户的权限下登录的(这个真没啥好说的了)。
进去之后,修改权限和密码:
mysql> GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY "123456";
那个privileges写不写无所谓,新版本的mysql直接写all就行了,意思是全部操作的权限都给你指定的那个用户。
*.*是什么意思呢,它的原型是’db_name.table_name’,所以在此的意思是所有数据库的所有表。
root@localhost表示的就是本地登录的root账户,identified by后跟的就是你要设置的密码。
下次你再想用root身份登录mysql就应该在控制台输入:
$mysql -u root -p
然后控制台会弹出”Enter password:”叫你输入密码。
基本的root设置就是这样了。
如果你希望别人可以通过IP地址访问你的数据库,那么就改一下/etc/mysql/my.cnf中的配置即可:
$sudo gedit /etc/mysql/my.cnf
把bind-address=127.0.0.1中的地址改成你机子分配到的IP地址即可。
想知道自己的网卡信息,用ifconfig命令就可以了,不多说了。
一、用户的增删修改:
用户操作,一般都要以root身份登录到mysql中进行(不一定是root,但凡是具有CREATE USER相关权限和GRANT OPTION相关权限的账户均可)。
新建用户的语法如下:
CREATE USER user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ...
最基本的,我想新建一个本地账户,名叫nero,密码是123456(先用root登录到mysql):
create user ‘nero’@‘localhost’ identified by ‘123456’
删除用户的语法则是:
DROP USER user [, user] ...
比如我要删除刚刚新建的用户:
drop user ‘nero’@‘localhost’
更改用户密码:
方法一:
mysqladmin -u 用户名 -p password 新密码
比如说前面新建的nero账户我想把它的密码改成123:
$ mysqladmin -u nero -p password '123'
然后会通过’Enter password:’提示你输入旧密码以确认,确认以后则完成修改,下次你再用nero这个账户登录的时候,需要输入的密码就是123。
方法二:
当然你也可以通过SET PASSWORD语法来更改密码,当然,首先你当前登录的账户要有这个权限(比如root账户):
SET PASSWORD [FOR user] = { PASSWORD('some password') | OLD_PASSWORD('some password') | 'encrypted password' }
比如说,更改nero这个本地账户的密码:
set password for ‘nero’@’localhost’ = password(‘123’)
二、用户权限:
其实创建用户就是为了管理权限,我们不想要每个人都能对这个数据库做改动,有些账户可能我只希望你能查看(select),但是没法修改(增删改等)。这个时候我们就可以创建一些权限比较少的用户。
分配权限我们可以用GRANT,而收回(取消)权限则可以用REVOKE。
Grant:


GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level TO user [IDENTIFIED BY [PASSWORD] 'password'] [, user [IDENTIFIED BY [PASSWORD] 'password']] ... [REQUIRE {NONE | ssl_option [[AND] ssl_option] ...}] [WITH with_option ...]object_type: TABLE | FUNCTION | PROCEDUREpriv_level: * | *.* | db_name.* | db_name.tbl_name | tbl_name | db_name.routine_namessl_option: SSL | X509 | CIPHER 'cipher' | ISSUER 'issuer' | SUBJECT 'subject'with_option: GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_USER_CONNECTIONS count
比如说前面我创建的账户nero,我希望他获取所有的权限:
mysql>GRANT ALL ON *.* TO 'nero’ '@'localhost' identified by ‘123456’ ;
localhost表明nero这个账户从本地登录的时候可以获取全部操作权限。
一旦一个账户拥有所有权限,那么他对数据库就有完全的操作权,包括用户创建、权限修改等等,就不仅是简单的数据库、表操作了。
那如果我希望这个账户从任何一台机远程登录都能够有全部权限,则可以修改为:
mysql>GRANT ALL ON *.* TO nero@’%’ IDENTIFIED BY "123456";
单引号双引号都是没关系的。
如果我要对某一个特定的账户一些指定的权限,那么输入如下:
mysql>GRANT SELECT, INSERT ON db_name.table_name TO 'someuser'@'somehost';
甚至你也可以更详细地指定到列的权限,比如:
GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost';
Revoke:
Revoke语法规则如下:
REVOKE
priv_type [(column_list)]
[, priv_type [(column_list)]] ...
ON [object_type] priv_level
FROM user [, user] ...
撤销所有权限则是:
REVOKE ALL PRIVILEGES, GRANT OPTION
FROM user [, user] ...
比如我要删除本地账户nero对任何数据库中的任何表的insert权限:
REVOKE INSERT ON *.* FROM ‘nero’@'localhost';
其他的都大同小异,不作赘述,具体可以翻阅帮助文档。
题外话:
前阵子朋友看我记笔记,说写网络笔记不用写得太详细吧,记个大概即可,自己能看懂就行。
其实对这样的说法很有感触。像我们初学一门知识的时候,没人指导,没人告诉我们那些看似显而易见但是却晦涩难懂的东西,比如数学证明的一些“我们不妨做如下猜测”、“明显地”之类的话,可能老师自己也不知道为什么,毕竟做老师也只是一份职业,谋一口饭吃,不能奢求太多。但是初学者却确实要因此而绕很多弯路,并且起步很慢,很多实用性强,以后工作里可能经常需要用到的专业知识,老师也不会特地点出来告诉你。
每次想起这些都觉得很痛心。其实我们每次网上搜索一些关键词,哪次不是希望搜到的结果里面,就有一种切实可行的解决方案,很多时候搜索这些词汇的人是非常迫切地希望问题得到解决的(当然也不乏一些投机行为)。而这些人群中,很大一部分就是初学者。
英语不是我们的母语,学习外文知识总是更慢更没效率的,为什么国外的小屁孩八九岁就能做应用,因为英语就是他们的母语,他们看得懂帮助文档,比看市面上的那些“21天精通XXX”的书好上千百倍(这些书就别出版来误人子弟了)。当我们认真去看那些市面上写得比较优秀的书,比如说李刚写的J2EE相关的书,哪些不是从帮助文档里直接拿来然后改改做例子的?但是他能梳理,他有这能力,所以这钱就应该他赚。
综上,我只想说:第一,好好学英语;第二,对新手好点,宽容点。
最后给出常用权限列表:
Privilege |
Meaning |
ALL [PRIVILEGES] |
Grant all privileges at specified access level except GRANT OPTION |
ALTER |
Enable use of ALTER TABLE |
ALTER ROUTINE |
Enable stored routines to be altered or dropped |
CREATE |
Enable database and table creation |
CREATE ROUTINE |
Enable stored routine creation |
CREATE TABLESPACE |
Enable tablespaces and log file groups to be created, altered, or dropped |
CREATE TEMPORARY TABLES |
Enable use of CREATE TEMPORARY TABLE |
CREATE USER |
Enable use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGES |
CREATE VIEW |
Enable views to be created or altered |
DELETE |
Enable use of DELETE |
DROP |
Enable databases, tables, and views to be dropped |
EVENT |
Enable use of events for the Event Scheduler |
EXECUTE |
Enable the user to execute stored routines |
FILE |
Enable the user to cause the server to read or write files |
GRANT OPTION |
Enable privileges to be granted to or removed from other accounts |
INDEX |
Enable indexes to be created or dropped |
INSERT |
Enable use of INSERT |
LOCK TABLES |
Enable use of LOCK TABLES on tables for which you have the SELECT privilege |
PROCESS |
Enable the user to see all processes with SHOW PROCESSLIST |
REFERENCES |
Not implemented |
RELOAD |
Enable use of FLUSH operations |
REPLICATION CLIENT |
Enable the user to ask where master or slave servers are |
REPLICATION SLAVE |
Enable replication slaves to read binary log events from the master |
SELECT |
Enable use of SELECT |
SHOW DATABASES |
Enable SHOW DATABASES to show all databases |
SHOW VIEW |
Enable use of SHOW CREATE VIEW |
SHUTDOWN |
Enable use of mysqladmin shutdown |
SUPER |
Enable use of other adminstrative operations such as CHANGE MASTER TO, KILL,PURGE BINARY LOGS, SET GLOBAL, and mysqladmin debug command |
TRIGGER |
Enable triggers to be created or dropped |
UPDATE |
Enable use of UPDATE |
USAGE |
Synonym for “no privileges” |
bitsCN.com

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

MySQL是一種開源的關係型數據庫管理系統,主要用於快速、可靠地存儲和檢索數據。其工作原理包括客戶端請求、查詢解析、執行查詢和返回結果。使用示例包括創建表、插入和查詢數據,以及高級功能如JOIN操作。常見錯誤涉及SQL語法、數據類型和權限問題,優化建議包括使用索引、優化查詢和分錶分區。

MySQL在數據庫和編程中的地位非常重要,它是一個開源的關係型數據庫管理系統,廣泛應用於各種應用場景。 1)MySQL提供高效的數據存儲、組織和檢索功能,支持Web、移動和企業級系統。 2)它使用客戶端-服務器架構,支持多種存儲引擎和索引優化。 3)基本用法包括創建表和插入數據,高級用法涉及多表JOIN和復雜查詢。 4)常見問題如SQL語法錯誤和性能問題可以通過EXPLAIN命令和慢查詢日誌調試。 5)性能優化方法包括合理使用索引、優化查詢和使用緩存,最佳實踐包括使用事務和PreparedStatemen

選擇MySQL的原因是其性能、可靠性、易用性和社區支持。 1.MySQL提供高效的數據存儲和檢索功能,支持多種數據類型和高級查詢操作。 2.採用客戶端-服務器架構和多種存儲引擎,支持事務和查詢優化。 3.易於使用,支持多種操作系統和編程語言。 4.擁有強大的社區支持,提供豐富的資源和解決方案。

Apache 連接數據庫需要以下步驟:安裝數據庫驅動程序。配置 web.xml 文件以創建連接池。創建 JDBC 數據源,指定連接設置。從 Java 代碼中使用 JDBC API 訪問數據庫,包括獲取連接、創建語句、綁定參數、執行查詢或更新以及處理結果。

在 Docker 中啟動 MySQL 的過程包含以下步驟:拉取 MySQL 鏡像創建並啟動容器,設置根用戶密碼並映射端口驗證連接創建數據庫和用戶授予對數據庫的所有權限

MySQL在Web應用中的主要作用是存儲和管理數據。 1.MySQL高效處理用戶信息、產品目錄和交易記錄等數據。 2.通過SQL查詢,開發者能從數據庫提取信息生成動態內容。 3.MySQL基於客戶端-服務器模型工作,確保查詢速度可接受。

Laravel 是一款 PHP 框架,用於輕鬆構建 Web 應用程序。它提供一系列強大的功能,包括:安裝: 使用 Composer 全局安裝 Laravel CLI,並在項目目錄中創建應用程序。路由: 在 routes/web.php 中定義 URL 和處理函數之間的關係。視圖: 在 resources/views 中創建視圖以呈現應用程序的界面。數據庫集成: 提供與 MySQL 等數據庫的開箱即用集成,並使用遷移來創建和修改表。模型和控制器: 模型表示數據庫實體,控制器處理 HTTP 請求。

優雅安裝 MySQL 的關鍵在於添加 MySQL 官方倉庫。具體步驟如下:下載 MySQL 官方 GPG 密鑰,防止釣魚攻擊。添加 MySQL 倉庫文件:rpm -Uvh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm更新 yum 倉庫緩存:yum update安裝 MySQL:yum install mysql-server啟動 MySQL 服務:systemctl start mysqld設置開機自啟動
