Ubuntu Linux 配置 MySQL 8.0
今晚给云服务器配MySQL
出了不少奇怪的问题 感谢守望时空33大佬的文章 让我解决所有问题 若大家是Debian
系统,可直接看大佬的博客
1.下载并上传
现在服务器执行: sudo apt purge mariadb*
在下载页面选择适合自己的版本
在这里我选择:
将下载好的tar
文件解压,将所有deb
文件上传到指定路径,并进入该路径,安装所有deb
文件
例如:
1 | mkdir /root/MySQL8.0 |
若安装后出现错误,可执行:
1 | sudo apt update |
成功后,会显示一个界面让你设置root密码,即数据库超级管理员root的密码,设置即可:
告知你MySQL 8.0 有新的加密方式,OK即可
然后会让你选择加密方式,有新加密方式和传统加密方式两种。这里需要说明的是如果选择新加密方式可能远程连接数据库时会报错,所以没特殊需要建议选择传统加密方式:
如果刚才忘记设置密码了,可以通过以下命令设置密码
1 | use mysql; |
完成安装
2.修改配置文件
MySQL 8
的配置文件在/etc/mysql/my.cnf
,没有特殊需要一般不用修改。不过我们一般只需修改服务端的配置即可。服务端配置需要修改/etc/mysql/mysql.conf.d/mysqld.cnf
文件,打开这个文件可以看到:
1 | Copyright (c) 2014, 2021, Oracle and/or its affiliates. |
上面[mysqld]
表示一个配置组,即为服务端配置,这个配置组下面的四行配置依次代表:进程文件位置、socket文件位置、数据库存放文件夹和错误日志文件位置。
通过在下面添加port=自定义端口号
可以自定义端口号(默认为3306)
字符集,建议改成utf8mb4 character-set-server=utf8mb4
再修改/etc/mysql/my.cnf
这个配置文件,加入[client]
配置组(如果没有的话)并设置字符集,添加如下语句:
1 | [client] |
重启MySQL服务 见3
3.启动数据库服务
通过这个目录启动:
1 | service mysql start |
停止:
1 | service mysql stop |
重启(修改完配置文件重启生效):
1 | service mysql restart |
安装完成,MySQL的服务端是默认开机自启动的,我们可以通过下列命令打开/关闭MySQL的开机自启动:
允许开机自启:
1 | systemctl enable mysql |
禁用开机自启:
1 | systemctl disable mysql |
4.设置外网可以连接(重头戏)
- 连接数据库
1 | mysql -u root -p |
- 依次执行
1 | use mysql; |
其中host
原来为localhost
,只能由本机访问,通过通配符'%'
允许所有IP访问
5.连接测试
我用本地Windows10进行测试
连接成功!
6.MySQL数据库常规操作
添加用户
create user '用户名'@'可接受连接的主机的ip' identified by '用户密码';
例如:
创建用户a密码为123456,a只能从本机登录(主机字段为localhost):
1 | create user 'a'@'localhost' identified by '123456'; |
创建用户b密码为123456,b可以从外网任何主机远程登录(主机字段为%):
1 | create user 'b'@'%' identified by '123456'; |
然后授权用户:
1 | grant 权限 on 授权可操作的数据库.授权可操作的表名 to '被授权用户'@'可操作的主机ip'; |
其中权限字段有SELECT , INSERT , UPDATE等,若授予所有权限则这里填ALL。
例如给b授予操作所有数据库的所有表的全部权限:
1 | grant ALL on *.* to 'b'@'%'; |
需要注意的是,用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用如下的命令:
1 | grant 权限 on 授权可操作的数据库.授权可操作的表名 to '用户名'@'可操作主机' with grant option; |
例如给b授予操作所有数据库的所有表的全部权限并有授权权限:
1 | grant ALL on *.* to 'b'@'%' with grant option; |
修改用户密码
在MySQL8中,使用alter语句修改密码。先登录,然后执行以下语句:
1 | alter user '用户名'@'授权的登录地址' identified by '新密码'; |
注意登录root或者任何高权限账户可以修改自己以及其他用户密码,而普通账户登录只能修改自己的密码。
其它的增删改查基本操作就不过多赘述