最近在ubuntu20.04安装配置mysql 8.0.28 时遇到了一点小麻烦,而这些问题应该是高手不屑一顾,而新手又无从下手的,现在我把我的解决过程写下来,以备后用。

1.安装

apt install -y mysql-server

image.png apt默认安装的是mysql 8.0.28

2.验证

查看mysql版本

mysql -V

开启mysql 8.0,查看mysql的状态

# 启动mysql
systemctl start mysql
# 查看状态
 systemctl status mysql
# 将mysql 加入自开机自启动
systemctl enable mysql

:notes: mysql 8.0 直接使用start mysql就可以了

如果上述命令都没有报错说明mysql已经安装成功了

image-20220224153537377 image.png 3.使用

使用root用户登录

mysql -u root -p
# 或者直接输入 mysql后回车
mysql

image.png 首次登录时密码为空,空密码当然不安全,所以一般安装mysql后的第一件事就是添加非root用户及用户密码

查看mysql用户信息

select user,host, authentication_string from mysql.user;

image.png 创建root密码

问题就出在这,mysql 8.0.28 root 密码设置和之前的版本有所不同了。

mysql> use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_password_here';
mysql> flush privileges;
mysql> quit

注意关键字mysql_native_password

'your_password_here' :是你要给root设置的新密码。 image.png 再次登录输入新密码就可以登录了。 image.png 添加新用户

CREATE USER 'username'@'host' IDENTIFIED BY 'password';
  • username:你将创建的用户名
  • host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
  • password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
CREATE USER 'pig'@'%' IDENTIFIED BY 'tiger';

给新用户授权

GRANT privileges ON databasename.tablename TO 'username'@'host'

说明:

  • privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
  • databasename:数据库名
  • tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*

usage **

GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';

刷新授权

flush privileges;

查看用户的权限信息

show grants for 'pig'@'%'

image.png