在Ubuntu20.04上安裝MySQL8.0及正確配置[已驗證]

Ubuntu在20.04版本中,源倉庫中MySQL的默認版本已經更新到8.0。因此可以直接安裝。

安裝MySQL

sudo apt-get update  #更新源
sudo apt-get install mysql-server #安裝

驗證

安裝完成後,可以通過下面的命令來查看時候安裝成功:

systemctl status mysql

在這裏插入圖片描述看到上面的信息就說明MySQL已經安裝好並運行起來了。

登陸MySQL

  • 以root用戶登陸
sudo mysql -u root -p  # -u 指定用戶名 -p需要輸入密碼

或者:

sudo mysql #可以不需要指定用戶名密碼

在這裏插入圖片描述已經成功連接到數據庫服務器了。那接下來我們看看這裏都有哪些databases.

mysql>show databases;

在這裏插入圖片描述

MySQL安裝好後有默認的這幾個數據庫。其中mysql裏有user表,這個表裏放了user、host相關的一些信息。通過下面的命令看到這個表。

mysql> show tables from mysql;
+---------------------------+
| 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> select User, Host from mysql.user;
+------------------+-----------+
| User             | Host      |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| root             | localhost |
+------------------+-----------+
5 rows in set (0.00 sec)

這裏root就是我們剛纔連接的賬戶。debian-sys-maint賬號是在安裝MySQL自動產生的,可以通過下面的命令查看到它。

sudo cat /etc/mysql/debian.cnf

在這裏插入圖片描述

創建db

mysql> create database db_test;
Query OK, 1 row affected (0.01 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| db_test            |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

此時數據庫裏還沒有任何表:

mysql> use db_test;
Database changed
mysql> show tables;
Empty set (0.00 sec)

我們需要創建一個表(t_test):

mysql> create table t_test (id int, name varchar(20));
Query OK, 0 rows affected (0.08 sec)

插入數據:

mysql> insert into t_test(id, name) values(1, "A");

解決workbench連接的問題

發現沒有權限:

在這裏插入圖片描述MySQL8.0的版本更改了root賬戶的授權方式,默認是auth_socket。也就是說需要通過 Unix socket 文件來驗證所有連接到localhost的用戶,不能使用提供密碼的方式了。我們需要通過下面的指令更一下授權方式。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BT 'root的密碼';
Query OK, 0 rows affected (0.01 sec)

然後再使用workbench重新Test Connection,連接正常。

在這裏插入圖片描述
在這裏插入圖片描述

對workbench不能使用root訪問數據庫的問題,上面的方案是修改root的默認授權方式。

有網友講還可以使用另外一個方案來解決

  • 先創建另外一個賬戶(如admin),
mysql> create user 'admin'@'localhost' identified by 'admin'; # 創建admin
  • 給予這個賬戶(admin)最大的權限,然後workbench就可以使用admin賬戶訪問數據庫了。
mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'admin'

經驗證, GRANT特性MySQL8.0之前的版本里有的,MySQL8.0版本已不再支持,不能再使用GRANT來提升權限了。
因此只能使用前面介紹的更改默認授權方式了。

小結

至此,已經可以在ubuntu上正常使用mysql 8.0版本了。mysql 8.0更改了默認的授權方式,移除了grant權限特性。對其它方面的改進需進一步挖掘。

好記性不如爛筆頭,寫此博文只爲備忘。如能幫到有需要的小夥伴,那將是我的榮幸。

另附一些mysql常用操作。

常用操作

sudo service mysql start # 啓動mysql service

如何新增用戶

CREATE USER 'admin'@'localhost' IDENTIFIED BY '你要設置的密碼'; 

對新增的用戶更改加密方式和密碼

ALTER USER 'admin'@'localhost' IDENTIFIED WITH mysql_native_password BY 'admin';

卸載MySQL

sudo rm /var/lib/mysql/ -R
sudo rm /etc/mysql/ -R
sudo apt-get autoremove mysql* --purge

參考

  • https://www.mysql.com/why-mysql/white-papers/whats-new-mysql-8-0/

  • https://forum.ubuntu.org.cn/viewtopic.php?t=491034

  • https://www.jianshu.com/p/39a2b636b40a

  • https://blog.csdn.net/king921004/article/details/106184909/

  • https://blog.csdn.net/yunyexiangfeng/article/details/82876964?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章