mysql-8.0.11-winx64 安裝配置: mysqld --initialize --console MYSQL:ERROR 1045 (28000): Access denied ...

mysql-8.0.11-winx64 安裝配置: mysqld --initialize --console MYSQL:ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost——MySQL5.7修改密碼

mysql-8.0.11 不再有 my.ini 配置文件了. 通過mysqld --initialize --console 自動生成MYSQL的初始化配置(data文件目錄等).

用戶名密碼: 這一步才是關(guān)鍵!!! 記得加上 --console 參數(shù)!

C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld --initialize --console
2018-05-24T18:31:49.968235Z 0 [System] [MY-013169] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysq
ld 8.0.11) initializing of server in progress as process 34224
2018-05-24T18:31:56.947634Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qk-nm1!hE/4r
2018-05-24T18:32:00.694848Z 0 [System] [MY-013170] [Server] C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (mysq
ld 8.0.11) initializing of server has completed

使用日志中打印的密碼: qk-nm1!hE/4r

 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: qk-nm1!hE/4r

命令行登陸 mysql 終端:

C:\Program Files\MySQL\MySQL Server 8.0\bin>mysql -uroot -p
Enter password: ************
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.11

Copyright (c) 2000, 2018, 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>

在執(zhí)行SQL腳本之前,會讓你先改密碼:


mysql>
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

登陸后執(zhí)行下面SQL .

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';

mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
Query OK, 0 rows affected (0.03 sec)


mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.02 sec)

mysql> use mysql;

mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| component                 |
| db                        |
| default_roles             |
| engine_cost               |
| func                      |
| general_log               |
| global_grants             |
| gtid_executed             |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| innodb_index_stats        |
| innodb_table_stats        |
| password_history          |
| plugin                    |
| procs_priv                |
| proxies_priv              |
| role_edges                |
| server_cost               |
| servers                   |
| slave_master_info         |
| slave_relay_log_info      |
| slave_worker_info         |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
33 rows in set (0.00 sec)




mysql> desc user;
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field                  | Type                              | Null | Key | Default               | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host                   | char(60)                          | NO   | PRI |                       |       |
| User                   | char(32)                          | NO   | PRI |                       |       |
| Select_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Insert_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Update_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Delete_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Create_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Drop_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Reload_priv            | enum('N','Y')                     | NO   |     | N                     |       |
| Shutdown_priv          | enum('N','Y')                     | NO   |     | N                     |       |
| Process_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| File_priv              | enum('N','Y')                     | NO   |     | N                     |       |
| Grant_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| References_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Index_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Show_db_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Super_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tmp_table_priv  | enum('N','Y')                     | NO   |     | N                     |       |
| Lock_tables_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Execute_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_slave_priv        | enum('N','Y')                     | NO   |     | N                     |       |
| Repl_client_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Create_view_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Show_view_priv         | enum('N','Y')                     | NO   |     | N                     |       |
| Create_routine_priv    | enum('N','Y')                     | NO   |     | N                     |       |
| Alter_routine_priv     | enum('N','Y')                     | NO   |     | N                     |       |
| Create_user_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Event_priv             | enum('N','Y')                     | NO   |     | N                     |       |
| Trigger_priv           | enum('N','Y')                     | NO   |     | N                     |       |
| Create_tablespace_priv | enum('N','Y')                     | NO   |     | N                     |       |
| ssl_type               | enum('','ANY','X509','SPECIFIED') | NO   |     |                       |       |
| ssl_cipher             | blob                              | NO   |     | NULL                  |       |
| x509_issuer            | blob                              | NO   |     | NULL                  |       |
| x509_subject           | blob                              | NO   |     | NULL                  |       |
| max_questions          | int(11) unsigned                  | NO   |     | 0                     |       |
| max_updates            | int(11) unsigned                  | NO   |     | 0                     |       |
| max_connections        | int(11) unsigned                  | NO   |     | 0                     |       |
| max_user_connections   | int(11) unsigned                  | NO   |     | 0                     |       |
| plugin                 | char(64)                          | NO   |     | caching_sha2_password |       |
| authentication_string  | text                              | YES  |     | NULL                  |       |
| password_expired       | enum('N','Y')                     | NO   |     | N                     |       |
| password_last_changed  | timestamp                         | YES  |     | NULL                  |       |
| password_lifetime      | smallint(5) unsigned              | YES  |     | NULL                  |       |
| account_locked         | enum('N','Y')                     | NO   |     | N                     |       |
| Create_role_priv       | enum('N','Y')                     | NO   |     | N                     |       |
| Drop_role_priv         | enum('N','Y')                     | NO   |     | N                     |       |
| Password_reuse_history | smallint(5) unsigned              | YES  |     | NULL                  |       |
| Password_reuse_time    | smallint(5) unsigned              | YES  |     | NULL                  |       |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
49 rows in set (0.00 sec)


這下子我們就可以使用 C:\Program Files\MySQL\MySQL Workbench 8.0 CE

客戶端工具直接連mysql數(shù)據(jù)庫了.

image.png
image.png
image.png
image.png

Windows上的 建議使用: mysql-installer-community-8.0.11.0.msi 安裝包進行安裝,不要直接使用 zip解壓免安裝的版本.

image.png

https://dev.mysql.com/downloads/windows/installer/8.0.html

MYSQL:ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost——MySQL 8.0.11 修改密碼

mysql-8.0.11-winx64配置

1陶耍、首先下載mysql-8.0.11-winx64.zip,并解壓到自定義目錄育韩。

我的安裝目錄為F:\software\eclipse J2EE\mysql-8.0.11-winx64\

2堕绩、配置文件

配置文件默認(rèn)是安裝目錄下的 my.ini 文件(或my-default.ini),沒有需要自己創(chuàng)建于个。

[mysqld]
# 設(shè)置3306端口
port=3306 # 設(shè)置mysql的安裝目錄
basedir=F:\software\eclipse J2EE\mysql-8.0.11-winx64\
# 設(shè)置mysql數(shù)據(jù)庫的數(shù)據(jù)的存放目錄
datadir=F:\software\eclipse J2EE\mysql-8.0.11-winx64\data
# 允許最大連接數(shù)
max_connections=200 # 允許連接失敗的次數(shù)。這是為了防止有人從該主機試圖攻擊數(shù)據(jù)庫系統(tǒng)
max_connect_errors=10 # 服務(wù)端使用的字符集默認(rèn)為UTF8
character-set-server=utf8
# 創(chuàng)建新表時將使用的默認(rèn)存儲引擎 default-storage-engine=INNODB
# 默認(rèn)使用“mysql_native_password”插件認(rèn)證
default_authentication_plugin=mysql_native_password
[mysql]
# 設(shè)置mysql客戶端默認(rèn)字符集 default-character-set=utf8
[client]
# 設(shè)置mysql客戶端連接服務(wù)端時默認(rèn)使用的端口
port=3306
default-character-set=utf8</pre>

注意,里面的 basedir 是我本地的安裝目錄壁酬,datadir 是我數(shù)據(jù)庫數(shù)據(jù)文件要存放的位置,各項配置需要根據(jù)自己的環(huán)境進行配置恨课。

3舆乔、初始化數(shù)據(jù)庫

在MySQL安裝目錄的 bin 目錄下執(zhí)行命令:

mysqld --initialize --console

執(zhí)行完成后,會打印 root 用戶的初始默認(rèn)密碼剂公,在執(zhí)行輸出結(jié)果里面有一段:
[Note] [MY-010454] [Server] A temporary password is generated for root@localhost: rI5rvf5x5G,E 其中root@localhost:

后面的“rI5rvf5x5G,E”就是初始密碼(不含首位空格)希俩。在沒有更改密碼前,需要記住這個密碼诬留,后續(xù)登錄需要用到斜纪。

要是你手賤,關(guān)快了文兑,或者沒記住盒刚,那也沒事,刪掉初始化的 datadir 目錄绿贞,再執(zhí)行一遍初始化命令因块,又會重新生成的。

4籍铁、安裝服務(wù)

在MySQL安裝目錄的bin目錄下按shift+右鍵執(zhí)行“在此處打開命令行窗口”

執(zhí)行mysqld --install和net start mysql安裝并啟動mysql涡上,如果關(guān)閉執(zhí)行net stop mysql

C:\Program Files\MySQL\bin>mysqld --install
Service successfully installed
C:\Program Files\MySQL\bin>net start mysql

5、登錄

在MySQL安裝目錄的bin目錄下按shift+右鍵執(zhí)行“在此處打開命令行窗口”

執(zhí)行mysql -u root -p拒名,輸入密碼吩愧。

6、修改密碼

登陸后執(zhí)行下面命令增显。

ALTER USER ``'root'``@``'localhost' IDENTIFIED WITH mysql_native_password BY ``'新密碼'``;

7雁佳、配置環(huán)境變量

雖然MySQL安裝成功,但是每次都切換到:\mysql-5.7.17-winx64下來執(zhí)行相關(guān)操作是很麻煩的同云,配置環(huán)境變量后就可方便的操作MySQL了糖权。右鍵‘計算機’->‘屬性’->‘高級系統(tǒng)設(shè)置’->‘環(huán)境變量’,在系統(tǒng)變量下找到path炸站,點擊編輯按鈕進入編輯path對話框星澳,在變量值里面前面加上MySQL的解壓路徑下的bin目錄,我的是F:\software\eclipse J2EE\mysql-8.0.11-winx64\bin旱易,注意后面要加上英文分號禁偎,確定即配置好環(huán)境變量腿堤。

image

參考:http://www.jb51.net/article/139219.htm

https://www.cnblogs.com/cenwei/p/6249856.html

D:\soft\mysql-8.0.11-winx64>tree
文件夾 PATH 列表
卷序列號為 648E-144B
D:.
├─bin
├─data
│  ├─mysql
│  ├─performance_schema
│  └─sys
├─docs
├─include
│  ├─mysql
│  └─openssl
├─lib
│  ├─mecab
│  │  ├─dic
│  │  │  ├─ipadic_euc-jp
│  │  │  ├─ipadic_sjis
│  │  │  └─ipadic_utf-8
│  │  └─etc
│  └─plugin
│      └─debug
└─share
    ├─bulgarian
    ├─charsets
    ├─czech
    ├─danish
    ├─dutch
    ├─english
    ├─estonian
    ├─french
    ├─german
    ├─greek
    ├─hungarian
    ├─italian
    ├─japanese
    ├─korean
    ├─norwegian
    ├─norwegian-ny
    ├─polish
    ├─portuguese
    ├─romanian
    ├─russian
    ├─serbian
    ├─slovak
    ├─spanish
    ├─swedish
    └─ukrainian







D:\soft\mysql-8.0.11-winx64\bin>tree /f
文件夾 PATH 列表
卷序列號為 648E-144B
D:.
    echo.exe
    ibd2sdi.exe
    innochecksum.exe
    libeay32.dll
    libmecab.dll
    lz4_decompress.exe
    myisamchk.exe
    myisamlog.exe
    myisampack.exe
    myisam_ftdump.exe
    mysql.exe
    mysqladmin.exe
    mysqlbinlog.exe
    mysqlcheck.exe
    mysqld.exe
    mysqld.pdb
    mysqldump.exe
    mysqldumpslow.pl
    mysqld_multi.pl
    mysqlimport.exe
    mysqlpump.exe
    mysqlshow.exe
    mysqlslap.exe
    mysqlxtest.exe
    mysql_config.pl
    mysql_config_editor.exe
    mysql_secure_installation.exe
    mysql_ssl_rsa_setup.exe
    mysql_tzinfo_to_sql.exe
    mysql_upgrade.exe
    my_print_defaults.exe
    perror.exe
    resolveip.exe
    ssleay32.dll
    zlib_decompress.exe

重啟mysqld服務(wù)

在Windows中是這個界面:

WIN+R快捷鍵打開運行命令,并輸入services.msc届垫,按回車Enter即可進入.

image.png
image.png

輸入命令 mysqld install

提示:Service successfully installed.

安裝以后啟動mysql服務(wù)

輸入命令 net start mysql

5.7以上的版本可能會無法啟動释液,報錯:服務(wù)沒有報告任何錯誤。

輸入命令 mysqld --initialize

正常情況下無任何提示装处,自動空格一行误债,即代表初始化成功。

再重新啟動服務(wù)就可以開起來妄迁,原因是5.7安裝文件夾里面缺少data文件夾寝蹈,initialize以后會自動生成這個文件夾及其中文件。

命令行設(shè)置用戶名密碼

錯誤提示:

# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

或者

# mysql -u root -p password 'newpassword'
Enter password:
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: YES)' 

現(xiàn)在終于找到解決方法了登淘。本來準(zhǔn)備重裝的箫老,現(xiàn)在不必了。
方法操作很簡單黔州,如下:

# /etc/init.d/mysqld stop //停止mysql服務(wù)的運行
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking & //跳過受權(quán)表訪問
# mysql -u root mysql //登錄mysql

在mysql5.7以下的版本如下:

mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root' and host='127.0.0.1' or host='localhost';//把空的用戶密碼都修改成非空的密碼就行了耍鬓。

在mysql5.7版本如下:

update mysql.user set authentication_string=password('newpassword') where user='root' and host='127.0.0.1' or host='localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit # /etc/init.d/mysqld restart //離開并重啟mysql
# mysql -uroot -p
Enter password: <輸入新設(shè)的密碼newpassword> 

附:Mac上解決Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'

首先安裝完mysql之后,在系統(tǒng)偏好設(shè)置里面會有mysql設(shè)置流妻,進去后可點擊啟動mysql server和關(guān)閉牲蜀。
出現(xiàn)問題的原因是mysql root用戶的密碼問題,我在網(wǎng)上找了好多種方法绅这,最后這種方法可行涣达,就記錄下來了,具體步驟看下面证薇。
解決步驟:
1度苔、首先在設(shè)置中關(guān)閉mysql服務(wù);
2浑度、然后打開終端寇窑,輸入:sudo mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
再輸入:sudo mysql -u root mysql
進入mysql>
執(zhí)行以下命令:update user set password_expired = "Y" where user="root";

再輸入:flush privileges;這一步很重要
然后:quit
3、進行登陸
輸入:mysql -uroot -p
會提示你輸入密碼箩张,這個密碼就是安裝mysql時出現(xiàn)的

2017-12-13T09:25:15.976324Z 1 [Note] A temporary password is generated for root@localhost: ug&eyEFeo08n

If you lose this password, please consult the section How to Reset the
Root Password in the MySQL reference manual.

這段提示中疗认,密碼就是ug&eyEFeo08n,輸入即可伏钠。
4、登陸成功之后可以修改密碼:

set password for root@localhost = password('123456');
之后登陸就用123456這個密碼了谨设。

問題描述

今天在MAC上安裝完MYSQL后熟掂,MYSQL默認(rèn)給分配了一個默認(rèn)密碼,但當(dāng)自己在終端上使用默認(rèn)密碼登錄的時候扎拣,總會提示一個授權(quán)失敗的錯誤:Access denied for user ‘root’@’localhost’ (using passwor)如圖:

這里寫圖片描述

解決方案

既然現(xiàn)在沒法登錄到數(shù)據(jù)庫中赴肚,改密碼和添加用戶等操作也無從談起素跺。好在MySQL中還提供了一種免去密碼校驗進入數(shù)據(jù)庫的方法,我們就先使用這種方法登入到數(shù)據(jù)庫中誉券。然后將默認(rèn)密碼替換掉指厌,上面的問題就可以解決掉啦~具體操作如下(如果想要快速解決,可以直接看最下面的快速方案)

一踊跟、找到Mysql配置文件

這個操作踩验,在不同平臺下對應(yīng)的不同的操作文件
mac系統(tǒng)中配置文件是mysql安裝目錄support_file下的my-default文件


這里寫圖片描述

需要注意的是:默認(rèn)該配置文件不具備寫權(quán)限需要使用chmod命令先為該文件添加寫權(quán)限才能進行更改

ps:windows系統(tǒng)的配置文件是mysql安裝根目錄的my.ini文件

二、修改配置文件

打開剛才我們找到的配置文件商玫,然后在里面找到 [mysqld] 這一項箕憾,然后在該配置項下添加 skip-grant-tables 這個配置,然后保存文件拳昌。

這里寫圖片描述

三袭异、重啟mysql服務(wù)

為了使上一步的配置項生效,我們需要重啟MySQL的服務(wù)
Mac系統(tǒng)可以在系統(tǒng)偏好中進行重啟:


這里寫圖片描述

windows系統(tǒng)可以通過:在我的電腦上右鍵–>服務(wù)–>找到mysql服務(wù)進行重啟
linux系統(tǒng)可以使用:service mysqld restart來重啟

四炬藤、免密登錄MySQL

然后再次進入到終端當(dāng)中御铃,敲入 mysql -u root -p 命令然后回車,當(dāng)需要輸入密碼時沈矿,直接按enter鍵上真,便可以不用密碼登錄到數(shù)據(jù)庫當(dāng)中

五、修改默認(rèn)的密碼

使用 set password for 'username'@'host' = password('newpassword') 命令修改新的密碼细睡。

六谷羞、檢驗成果

我們改完默認(rèn)密碼后,再次進入到之前的配置文件中溜徙,將我們跳過密碼的那個配置行給刪除掉湃缎,變?yōu)橄到y(tǒng)原先的配置。重啟MySQL服務(wù)蠢壹,下次再登錄的時候便可以解決掉這個問題了嗓违。

快速方案

要是你覺得上面的操作過于麻煩,可以使用下面的快捷方式達(dá)到上面的效果图贸,針對mac系統(tǒng)為例:
首先進入到 /usr/local/mysql/support-file 這個目錄下,然后按照圖片上的步驟進行操作

這里寫圖片描述

進入mysql的安全模式后蹂季,鍵入圖中圈起來的四行配置(必須逐行輸入),輸入完成后使用 contrl+z 鍵結(jié)束輸入
然后再終端中使用 mysql -u root -p 同樣可以實現(xiàn)密碼登錄疏日,另外此時密碼也已經(jīng)修改為了 pass 偿洁,下次的登錄即可使用pass這個新密碼了。與上面的操作達(dá)成的效果是相同的沟优。

忘記密碼了怎么辦 或者說 想把root的空密碼改成有密碼涕滋?修改密碼方法如下:

方法一:

root密碼為空時用下面命令修改, 修改成12345:

mysqladmin -u root -p password 12345
不為空時 使用mysqladmin。假如原密碼為123456 挠阁,修改為12345 命令如下

mysqladmin -u root -p 123456 password "12345"
  注意:更改的密碼不能用單引號宾肺,可用雙引號或不用引號
 
mysqladmin -u root -p oldpassword password “newpasswd”
執(zhí)行這個命令后溯饵,需要輸入root的原密碼,這樣root的密碼將改為newpasswd锨用。同樣丰刊,把命令里的root改為你的用戶名,你就可以改你自己的密碼了增拥。
當(dāng)然如果你的mysqladmin連接不上mysql server啄巧,或者你沒有辦法執(zhí)行mysqladmin,那么這種方法就是無效的跪者,而且mysqladmin無法把密碼清空

方法2:

/etc/init.d/mysql stop

mysqld_safe --user=mysql --skip-grant-tables --skip-networking &

mysql -u root mysql

mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root';
mysql> FLUSH PRIVILEGES;

mysql> quit

/etc/init.d/mysqld restart

mysql -u root -p

Enter password:
mysql>

如果我們想看看還有哪些賬戶 可以用下面的命令:

在mysql環(huán)境中

mysql>select * from mysql.user ;

新增賬戶:

GRANT ALL PRIVILEGES ON . TO 'monty'@'%' IDENTIFIED BY 'some_pass' WITH GRANT OPTION;

monty對應(yīng)帳號 some_pass對應(yīng)密碼

增加一個用戶棵帽,用戶名為sa,密碼為123渣玲。注意要使用PASSWORD函數(shù)逗概,然后還要使用FLUSH
PRIVILEGES來執(zhí)行確認(rèn)。
下面的方法都在mysql提示符下使用忘衍,且必須有mysql的root權(quán)限:
mysql>mysql> INSERT INTO user
-> VALUES('%','monty',PASSWORD('some_pass'),
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
-> 'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y',
-> '','','','',0,0,0,0);
mysql>FLUSH PRIVILEGES

用戶權(quán)限設(shè)置
  1逾苫、以root(也可用其它有權(quán)限的用戶)身份登錄
  2、下面創(chuàng)建一個test用戶枚钓,密碼為test铅搓,并且只能對picture數(shù)據(jù)庫進行操作的命令
    mysql>GRANT ALL ON picture.* TO test IDENTIFIED BY "test";
  GRANT語句的語法看上去像這樣:
  GRANT privileges (columns) ON what TO user IDENTIFIED BY "password" WITH GRANT OPTION

要使用該語句,你需要填寫下列部分:
  privileges 授予用戶的權(quán)限搀捷,下表列出可用于GRANT語句的權(quán)限指定符:
 權(quán)限指定符 權(quán)限允許的操作
  Alter       修改表和索引
  Create      創(chuàng)建數(shù)據(jù)庫和表
  Delete      刪除表中已有的記錄
  Drop    拋棄(刪除)數(shù)據(jù)庫和表
  INDEX      創(chuàng)建或拋棄索引
  Insert      向表中插入新行
  REFERENCE   未用
  Select     檢索表中的記錄
  Update      修改現(xiàn)存表記錄
  FILE       讀或?qū)懛?wù)器上的文件
  PROCESS    查看服務(wù)器中執(zhí)行的線程信息或殺死線程
  RELOAD     重載授權(quán)表或清空日志星掰、主機緩存或表緩存。
  SHUTDOWN   關(guān)閉服務(wù)器
  ALL       所有嫩舟;ALL PRIVILEGES同義詞
  USAGE     特殊的“無權(quán)限”權(quán)限

上表顯示在第一組的權(quán)限指定符適用于數(shù)據(jù)庫氢烘、表和列,第二組數(shù)管理權(quán)限家厌。一般播玖,這些被相對嚴(yán)格地授權(quán),因為它們允許用戶影響服務(wù)器的操作饭于。第三組權(quán)限特殊蜀踏,ALL意味著“所有權(quán)限”,UASGE意味著無權(quán)限掰吕,即創(chuàng)建用戶果覆,但不授予權(quán)限。
  columns   權(quán)限運用的列殖熟,它是可選的随静,并且你只能設(shè)置列特定的權(quán)限。如果命令有多于一個列,應(yīng)該用逗號分開它們燎猛。
  what   權(quán)限運用的級別。權(quán)限可以是全局的(適用于所有數(shù)據(jù)庫和所有表)照皆、特定數(shù)據(jù)庫(適用于一個數(shù)據(jù)庫中的所有表)或特定表的重绷。可以通過指定一個columns字句是權(quán)限是列特定的膜毁。
  user    權(quán)限授予的用戶昭卓,它由一個用戶名和主機名組成。在MySQL中瘟滨,你不僅指定誰能連接候醒,還有從哪里連接。這允許你讓兩個同名用戶從不同地方連接杂瘸。 MySQL讓你區(qū)分他們倒淫,并彼此獨立地賦予權(quán)限。MySQL中的一個用戶名就是你連接服務(wù)器時指定的用戶名败玉,該名字不必與你的Unix登錄名或 Windows名聯(lián)系起來敌土。缺省地,如果你不明確指定一個名字运翼,客戶程序?qū)⑹褂媚愕牡卿浢鳛镸ySQL用戶名返干。這只是一個約定。你可以在授權(quán)表中將該名 字改為nobody血淌,然后以nobody連接執(zhí)行需要超級用戶權(quán)限的操作矩欠。
  password    賦予用戶的口令,它是可選的悠夯。如果你對新用戶沒有指定IDENTIFIED BY子句癌淮,該用戶不賦給口令(不安全)。對現(xiàn)有用戶疗疟,任何你指定的口令將代替老口令该默。如果你不指定口令,老口令保持不變策彤,當(dāng)你用IDENTIFIED BY時栓袖,口令字符串用改用口令的字面含義,GRANT將為你編碼口令店诗,不要你用SET PASSWORD 那樣使用password()函數(shù)裹刮。
  WITH GRANT OPTION子句是可選的。如果你包含它庞瘸,用戶可以授予權(quán)限通過GRANT語句授權(quán)給其它用戶捧弃。你可以用該子句給與其它用戶授權(quán)的能力躁染。
  注意:用戶名、口令歼培、數(shù)據(jù)庫和表名在授權(quán)表記錄中是大小寫敏感的弹谁,主機名和列名不是。
  一般地买鸽,你可以通過詢問幾個簡單的問題來識別GRANT語句的種類:

誰能連接涧郊,從那兒連接?

用戶應(yīng)該有什么級別的權(quán)限眼五,他們適用于什么妆艘?

用戶應(yīng)該允許管理權(quán)限嗎?

下面就討論一些例子看幼。
  1.1 誰能連接批旺,從那兒連接?
  你可以允許一個用戶從特定的或一系列主機連接诵姜。有一個極端汽煮,如果你知道降職從一個主機連接,你可以將權(quán)限局限于單個主機:
  GRANT ALL ON samp_db.* TO boris@localhost IDENTIFIED BY "ruby"
  GRANT ALL ON samp_db.* TO fred@res.mars.com IDENTIFIED BY "quartz"
  (samp_db.意思是“samp_db數(shù)據(jù)庫的所有表)另一個極端是茅诱,你可能有一個經(jīng)常旅行并需要能從世界各地的主機連接的用戶max逗物。在這種情況下,你可以允許他無論從哪里連接:
  GRANT ALL ON samp_db.
TO max@% IDENTIFIED BY "diamond"
  “%”字符起通配符作用瑟俭,與LIKE模式匹配的含義相同翎卓。在上述語句中,它意味著“任何主機”摆寄。所以max和max@%等價失暴。這是建立用戶最簡單的方法,但也是最不安全的微饥。其中逗扒,你可以允許一個用戶從一個受限的主機集合訪問。例如欠橘,要允許mary從snake.net域的任何主機連接矩肩,用一個%.snake.net主機指定符:
  GRANT ALL ON samp_db.* TO mary@.snake.net IDENTIFIED BY "quartz";   
  如果你喜歡,用戶標(biāo)識符的主機部分可以用IP地址而不是一個主機名來給定肃续。你可以指定一個IP地址或一個包含模式字符的地址黍檩,而且,從MySQL 3.23始锚,你還可以指定具有指出用于網(wǎng)絡(luò)號的位數(shù)的網(wǎng)絡(luò)掩碼的IP號:

GRANT ALL ON samp_db.* TO boris@192.168.128.3 IDENTIFIED BY "ruby"
  GRANT ALL ON samp_db.* TO fred@192.168.128.% IDENTIFIED BY "quartz"
  GRANT ALL ON samp_db.* TO rex@192.168.128.0/17 IDENTIFIED BY "ruby"
  第一個例子指出用戶能從其連接的特定主機刽酱,第二個指定對于C類子網(wǎng)192.168.128的IP模式,而第三條語句中瞧捌,192.168.128.0/17指定一個17位網(wǎng)絡(luò)號并匹配具有192.168.128頭17位的IP地址棵里。
  1.2 用戶應(yīng)該有什么級別的權(quán)限和它們應(yīng)該適用于什么润文?
  你可以授權(quán)不同級別的權(quán)限,全局權(quán)限是最強大的殿怜,因為它們適用于任何數(shù)據(jù)庫典蝌。要使ethel成為可做任何事情的超級用戶,包括能授權(quán)給其它用戶稳捆,發(fā)出下列語句:
  GRANT ALL ON . TO ethel@localhost IDENTIFIED BY "coffee" WITH GRANT OPTION
  ON子句中的.意味著“所有數(shù)據(jù)庫、所有表”乔夯。從安全考慮,我們指定ethel只能從本地連接款侵。限制一個超級用戶可以連接的主機通常是明智的,因為它限制了試圖破解口令的主機妹笆。
   有些權(quán)限(FILE哲鸳、PROCESS、RELOAD和SHUTDOWN)是管理權(quán)限并且只能用"ON ."全局權(quán)限指定符授權(quán)缺狠。如果你愿意,你可以授權(quán)這些權(quán)限脸秽,而不授權(quán)數(shù)據(jù)庫權(quán)限儒老。例如,下列語句設(shè)置一個flush用戶记餐,他只能發(fā)出flush語句驮樊。 這可能在你需要執(zhí)行諸如清空日志等的管理腳本中會有用:
  GRANT RELOAD ON . TO flushl@localhost IDENTIFIED BY "flushpass"
  一般地,你想授權(quán)管理權(quán)限,吝嗇點囚衔,因為擁有它們的用戶可以影響你的服務(wù)器的操作挖腰。
數(shù)據(jù)庫級權(quán)限適用于一個特定數(shù)據(jù)庫中的所有表,它們可通過使用ON db_name.*子句授予:
  GRANT ALL ON samp_db TO bill@racer.snake.net INDETIFIED BY "rock" GRANT Select ON samp_db TO ro_user@% INDETIFIED BY "rock"
  第一條語句向bill授權(quán)samp_db數(shù)據(jù)庫中所有表的權(quán)限练湿,第二條創(chuàng)建一個嚴(yán)格限制訪問的用戶ro_user(只讀用戶)猴仑,只能訪問samp_db數(shù)據(jù)
庫中的所有表,但只有讀取肥哎,即用戶只能發(fā)出Select語句辽俗。
  你可以列出一系列同時授予的各個權(quán)限。例如篡诽,如果你想讓用戶能讀取并能修改現(xiàn)有數(shù)據(jù)庫的內(nèi)容崖飘,但不能創(chuàng)建新表或刪除表,如下授予這些權(quán)限:
 GRANT Select,Insert,Delete,Update ON samp_db TO bill@snake.net INDETIFIED BY "rock"
  對于更精致的訪問控制杈女,你可以在各個表上授權(quán)朱浴,或甚至在表的每個列上。當(dāng)你想向用戶隱藏一個表的部分時达椰,或你想讓一個用戶只能修改特定的列時翰蠢,列特定權(quán)限非常有用。如:
  GRANT Select ON samp_db.member TO bill@localhost INDETIFIED BY "rock"
  GRANT Update (expiration) ON samp_db. member TO bill@localhost
  第一條語句授予對整個member表的讀權(quán)限并設(shè)置了一個口令啰劲,第二條語句增加了Update權(quán)限梁沧,當(dāng)只對expiration列。沒必要再指定口令呈枉,因
為第一條語句已經(jīng)指定了趁尼。
  如果你想對多個列授予權(quán)限,指定一個用逗號分開的列表猖辫。例如酥泞,對assistant用戶增加member表的地址字段的Update權(quán)限,使用如下語句
啃憎,新權(quán)限將加到用戶已有的權(quán)限中:
  GRANT Update (street,city,state,zip) ON samp_db TO assistant@localhost
1.3 用戶應(yīng)該被允許管理權(quán)限嗎芝囤?
   你可以允許一個數(shù)據(jù)庫的擁有者通過授予數(shù)據(jù)庫上的所有擁有者權(quán)限來控制數(shù)據(jù)庫的訪問,在授權(quán)時辛萍,指定WITH GRANT OPTION悯姊。例如:如
果你想讓alicia能從big.corp.com域的任何主機連接并具有sales數(shù)據(jù)庫中所有表的管理員權(quán)限,你可以用如下 GRANT語句:

GRANT ALL ON sales.* TO alicia@%.big.corp.com INDETIFIED BY "applejuice" WITH GRANT OPTION
   在效果上WITH GRANT OPTION子句允許你把訪問授權(quán)的權(quán)利授予另一個用戶贩毕。要注意悯许,擁有GRANT權(quán)限的兩個用戶可以彼此授權(quán)。如果你只給予了第一個用戶Select權(quán) 限辉阶,而另一個用戶有GRANT加上Select權(quán)限先壕,那么第二個用戶可以是第一個用戶更“強大”瘩扼。

2 撤權(quán)并刪除用戶
  要取消一個用戶的權(quán)限,使用REVOKE語句垃僚。REVOKE的語法非常類似于GRANT語句集绰,除了TO用FROM取代并且沒有INDETIFED BY和WITH GRANT
OPTION子句:
  REVOKE privileges (columns) ON what FROM user
  user部分必須匹配原來GRANT語句的你想撤權(quán)的用戶的user部分。privileges部分不需匹配谆棺,你可以用GRANT語句授權(quán)栽燕,然后用REVOKE語句只撤銷部分權(quán)限。
  REVOKE語句只刪除權(quán)限改淑,而不刪除用戶碍岔。即使你撤銷了所有權(quán)限,在user表中的用戶記錄依然保留朵夏,這意味著用戶仍然可以連接服務(wù)器付秕。要完全刪除一個用戶,你必須用一條Delete語句明確從user表中刪除用戶記錄:
%mysql -u root mysql

mysql>Delete FROM user Where User="user_name" and Host="host_name";

mysql>FLUSH PRIVILEGES;
  Delete語句刪除用戶記錄侍郭,而FLUSH語句告訴服務(wù)器重載授權(quán)表。(當(dāng)你使用GRANT和REVOKE語句時掠河,表自動重載亮元,而你直接修改授權(quán)表時不是。)


MySQL 8.0 正式版 8.0.11 已發(fā)布唠摹,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍爆捞,還帶來了大量的改進和更快的性能!

注意:從 MySQL 5.7 升級到 MySQL 8.0 僅支持通過使用 in-place 方式進行升級勾拉,并且不支持從 MySQL 8.0 降級到 MySQL 5.7(或從某個 MySQL 8.0 版本降級到任意一個更早的 MySQL 8.0 版本)煮甥。唯一受支持的替代方案是在升級之前對數(shù)據(jù)進行備份。

下面簡要介紹 MySQL 8 中值得關(guān)注的新特性和改進藕赞。

  1. 性能:MySQL 8.0 的速度要比 MySQL 5.7 快 2 倍成肘。MySQL 8.0 在以下方面帶來了更好的性能:讀/寫工作負(fù)載、IO 密集型工作負(fù)載斧蜕、以及高競爭("hot spot"熱點競爭問題)工作負(fù)載双霍。
  1. NoSQL:MySQL 從 5.7 版本開始提供 NoSQL 存儲功能,目前在 8.0 版本中這部分功能也得到了更大的改進批销。該項功能消除了對獨立的 NoSQL 文檔數(shù)據(jù)庫的需求洒闸,而 MySQL 文檔存儲也為 schema-less 模式的 JSON 文檔提供了多文檔事務(wù)支持和完整的 ACID 合規(guī)性。
  1. 窗口函數(shù)(Window Functions):從 MySQL 8.0 開始均芽,新增了一個叫窗口函數(shù)的概念丘逸,它可以用來實現(xiàn)若干新的查詢方式。窗口函數(shù)與 SUM()掀宋、COUNT() 這種集合函數(shù)類似深纲,但它不會將多行查詢結(jié)果合并為一行仲锄,而是將結(jié)果放回多行當(dāng)中。即窗口函數(shù)不需要 GROUP BY囤萤。

  2. 隱藏索引:在 MySQL 8.0 中昼窗,索引可以被“隱藏”和“顯示”。當(dāng)對索引進行隱藏時涛舍,它不會被查詢優(yōu)化器所使用澄惊。我們可以使用這個特性用于性能調(diào)試,例如我們先隱藏一個索引富雅,然后觀察其對數(shù)據(jù)庫的影響掸驱。如果數(shù)據(jù)庫性能有所下降,說明這個索引是有用的没佑,然后將其“恢復(fù)顯示”即可毕贼;如果數(shù)據(jù)庫性能看不出變化,說明這個索引是多余的蛤奢,可以考慮刪掉鬼癣。

  3. 降序索引:MySQL 8.0 為索引提供按降序方式進行排序的支持,在這種索引中的值也會按降序的方式進行排序啤贩。

  4. 通用表表達(dá)式(Common Table Expressions CTE):在復(fù)雜的查詢中使用嵌入式表時待秃,使用 CTE 使得查詢語句更清晰。

  5. UTF-8 編碼:從 MySQL 8 開始痹屹,使用 utf8mb4 作為 MySQL 的默認(rèn)字符集章郁。

  6. JSON:MySQL 8 大幅改進了對 JSON 的支持,添加了基于路徑查詢參數(shù)從 JSON 字段中抽取數(shù)據(jù)的 JSON_EXTRACT() 函數(shù)志衍,以及用于將數(shù)據(jù)分別組合到 JSON 數(shù)組和對象中的 JSON_ARRAYAGG() 和 JSON_OBJECTAGG() 聚合函數(shù)暖庄。

  7. 可靠性:InnoDB 現(xiàn)在支持表 DDL 的原子性,也就是 InnoDB 表上的 DDL 也可以實現(xiàn)事務(wù)完整性楼肪,要么失敗回滾培廓,要么成功提交,不至于出現(xiàn) DDL 時部分成功的問題淹辞,此外還支持 crash-safe 特性医舆,元數(shù)據(jù)存儲在單個事務(wù)數(shù)據(jù)字典中。

  8. 高可用性(High Availability):InnoDB 集群為您的數(shù)據(jù)庫提供集成的原生 HA 解決方案象缀。

  9. 安全性:對 OpenSSL 的改進蔬将、新的默認(rèn)身份驗證、SQL 角色央星、密碼強度霞怀、授權(quán)。

詳細(xì)更新說明:https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-11.html
官方發(fā)布說明:https://blogs.oracle.com/mysql/announcing-general-availability-of-mysql-80
MySQL 8 正式版的新增功能:https://mysqlserverteam.com/whats-new-in-mysql-8-0-generally-available/

下載地址

Windows (x86, 64-bit), ZIP Archive(mysql-8.0.11-winx64.zip) 183.3M
https://dev.mysql.com/downloads/file/?id=476233

Windows (x86, 64-bit), ZIP Archive(mysql-8.0.11-winx64-debug-test.zip) 230.5M
Debug Binaries & Test Suite
https://dev.mysql.com/downloads/file/?id=476234

其他版本下載地址 >>> https://dev.mysql.com/downloads/mysql/8.0.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末莉给,一起剝皮案震驚了整個濱河市毙石,隨后出現(xiàn)的幾起案子廉沮,更是在濱河造成了極大的恐慌,老刑警劉巖徐矩,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滞时,死亡現(xiàn)場離奇詭異,居然都是意外死亡滤灯,警方通過查閱死者的電腦和手機坪稽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鳞骤,“玉大人窒百,你說我怎么就攤上這事≡ゾ。” “怎么了篙梢?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長美旧。 經(jīng)常有香客問我渤滞,道長,這世上最難降的妖魔是什么榴嗅? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任蔼水,我火速辦了婚禮,結(jié)果婚禮上录肯,老公的妹妹穿的比我還像新娘。我一直安慰自己吊说,他們只是感情好论咏,可當(dāng)我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颁井,像睡著了一般厅贪。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雅宾,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天养涮,我揣著相機與錄音,去河邊找鬼眉抬。 笑死贯吓,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蜀变。 我是一名探鬼主播悄谐,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼库北!你這毒婦竟也來了爬舰?” 一聲冷哼從身側(cè)響起们陆,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎情屹,沒想到半個月后坪仇,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡垃你,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年椅文,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜡镶。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡雾袱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出官还,到底是詐尸還是另有隱情芹橡,我是刑警寧澤,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布望伦,位于F島的核電站林说,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏屯伞。R本人自食惡果不足惜腿箩,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劣摇。 院中可真熱鬧珠移,春花似錦、人聲如沸末融。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽勾习。三九已至浓瞪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間巧婶,已是汗流浹背乾颁。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留艺栈,地道東北人英岭。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像湿右,于是被迫代替她去往敵國和親巴席。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容