zoukankan      html  css  js  c++  java
  • 在Ubuntu20.04上安装MySQL8.0及正确配置[已验证]

    Ubuntu在20.04版本中,源仓库中MySQL的默认版本已经更新到8.0。因此可以直接安装。

    安装MySQL

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

    create database swtest;
    create user 'swadmin'@'%' identified by 'P@ssw0rd@sw';
    grant all privileges on *.* to 'swadmin'@'%' with grant option;
    flush privileges;
    • 1
    • 2

    验证

    安装完成后,可以通过下面的命令来查看时候安装成功:

    systemctl status mysql
    
    • 1

    在这里插入图片描述看到上面的信息就说明MySQL已经安装好并运行起来了。

    登陆MySQL

    • 以root用户登陆
    sudo mysql -u root -p  # -u 指定用户名 -p需要输入密码
    
    • 1

    或者:

    sudo mysql #可以不需要指定用户名密码
    
    • 1

    在这里插入图片描述已经成功连接到数据库服务器了。那接下来我们看看这里都有哪些databases.

    mysql>show databases;
    
    • 1

    在这里插入图片描述

    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
    
    • 1

    在这里插入图片描述

    创建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
    
    • 1
    • 给予这个账户(admin)最大的权限,然后workbench就可以使用admin账户访问数据库了。
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' IDENTIFIED BY 'admin'
    
    • 1

    经验证, GRANT特性MySQL8.0之前的版本里有的,MySQL8.0版本已不再支持,不能再使用GRANT来提升权限了。
    因此只能使用前面介绍的更改默认授权方式了。

    小结

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

    好记性不如烂笔头,写此博文只为备忘。如能帮到有需要的小伙伴,那将是我的荣幸。

    另附一些mysql常用操作。

    常用操作

    sudo service mysql start # 启动mysql service
    
    • 1

    如何新增用户

    CREATE USER 'admin'@'localhost' IDENTIFIED BY '你要设置的密码'; 
    
    • 1

    对新增的用户更改加密方式和密码

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

    卸载MySQL

    sudo rm /var/lib/mysql/ -R
    sudo rm /etc/mysql/ -R
    sudo apt-get autoremove mysql* --purge
    
    • 1
    • 2
    • 3

    参考

    • 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

  • 相关阅读:
    元素的属性
    表单
    Array数组类
    string类
    js数据类型以及原型分析
    this
    有关兼容性的解决
    单位
    滚动条 和 背景位置及绝对定位
    圣杯布局 和 双飞翼布局
  • 原文地址:https://www.cnblogs.com/Areas/p/13439058.html
Copyright © 2011-2022 走看看