在 Ubuntu20.04 上安装 MySQL8.0 及正确配置[已验证]
安装 MySQL
验证
登陆 MySQL
创建 db
解决 workbench 连接的问题
小结
常用操作
如何新增用户
对新增的用户更改加密方式和密码
卸载 MySQL
参考
Ubuntu 在 20.04 版本中, 源仓库中 MySQL 的默认版本已经更新到 8.0. 因此可以直接安装.
安装 MySQL
- sudo apt-get update #更新源
- sudo apt-get install MySQL-server #安装
- 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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
这里 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)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
此时数据库里还没有任何表:
- MySQL> use db_test;
- Database changed
- MySQL> show tables;
- Empty set (0.00 sec)
- 1
- 2
- 3
- 4
我们需要创建一个表(t_test):
- MySQL> create table t_test (id int, name varchar(20));
- Query OK, 0 rows affected (0.08 sec)
- 1
- 2
插入数据:
- MySQL> insert into t_test(id, name) values(1, "A");
- 1
解决 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)
- 1
- 2
然后再使用 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
在 Ubuntu20.04 上安装 MySQL8.0 及正确配置[已验证]
来源: http://www.bubuko.com/infodetail-3653743.html