Ubuntu Server 18 卸载MySQL5.*安装MySQL8.0,实现远程访问数据库

如果你在Ubuntu18直接用

sudo apt-get install mysql-client mysql-server

系统默认会安装MySQL会默认安装5.7,但是MySQL5.7版本最高只适配到Ubuntu17.04,而MySQL8.0最高适配到Ubuntu18.04。

强行安装5.7会有一堆的问题等着你处理,与其等着一个个坑出现然后花时间解决,不如卸载5.7安装8


一、卸载MySQL5.*

1.删除mysql程序

sudo apt-get remove mysql-*

2.清理残留的数据

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

它会跳出一个对话框,你选择yes就好了


二、安装MySQL8.0

1.更新文件

首先去 MySQL官网 下载一个文件

mysql-apt-config_0…***_all.deb
在这里插入图片描述

在文件夹中找到下载的具体文件(如果你的Ubuntu是虚拟机,则将这个文件上传到系统),并执行(下面的**是省略的意思,你自己要改)
sudo dpkg -i mysql-apt-config_0.*.****_all.deb

然后会出现一个紫色框界面。
它有四个选项。选择第一个,enter确定,
然后又会出现一个紫色框界面,选择8.0那个。enter确定,
会回到第一个紫色框,此时按上下键选择 ok,enter确定。

最后更新数据源
sudo apt-get update


2.安装MySQL

现在执行
sudo apt-get install mysql-server

安装过程中会询问,都选择yes
安装最后会出现紫色框,让你输入密码,输入完成之后,会再让你输入一遍。确定。
输入完成之后,会出现紫色框问你选择密码的加密方式。因为第一种加密方式Ubuntu不支持,所以我们选择第二个加密方式。enter确定。

此时启动MySQL:
service mysql start

进入MySQL:
mysql -uroot -p

最后附赠几个常用命令(最后三个很多教程都有提到,但是起码我写这篇文章这次,并没有正确生效,不过都有替代命令,所以就没有深究

命令说明
mysql -uroot -p启动MySQL服务
sudo netstat -tap | grep mysql检查MySQL是否启动成功
service mysql stop关闭MySQL服务
sudo /etc/init.d/mysql start启动服务
sudo /etc/init.d/mysql restart重启服务
sudo /etc/init.d/mysql stop关闭服务

三、授权远程访问

刚安装的MySQL只能在系统中本地访问,想用navicat等软件远程访问还需要授权账号远程访问。
作为学习用不考虑安全问题,你可以直接授权你的管理员账号远程访问。
如果考虑到安全问题,建议针对不同的数据库设置对应的远程访问账号,或者授权给指定的IP

1.简单授权

直接授权你的管理员账号(默认是root)远程访问:

update user set host = '%' where user ='root';
FLUSH PRIVILEGES;

GRANT ALL ON 表示所有权限,% 表示通配所有 host,可以访问远程。

2.指定授权

下面是一个简单例子,授权用户test1admin远程访问数据库test1

2.1新建数据库

创建测试数据库test1:
create database test1;

2.2新建数据库用户

为数据库test1创建对应用户test1admin,密码123,
CREATE USER 'test1admin'@'%' IDENTIFIED BY '123';

下面是一些代码的说明:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';

字段说明
username你将创建的用户名,
host指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,,如果想让该用户可以从任意远程主机登陆,可以使用通配符%.
password该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.
2.3授权用户

授权用户test1admin管理数据库testq1
GRANT ALL PRIVILEGES ON test1.* TO 'test1'@'%';

下面是一些代码示例
其中databaseNametableName都可以用通配符 *
host可以用指定IP或者localhost表示本地,**%**表示远程和本地

命令说明
GRANT ALL PRIVILEGES ON databaseName.tableName TO 'user'@'host';授权指定数据库给用户
GRANT SELECT, UPDATE ON databaseName.tableName TO 'user'@'host';授权指定数据库的select和update权限给用户
EVOKE ALL PRIVILEGES ON databaseName.tableName TO 'user'@'host';取消授权
2.4刷新权限

FLUSH PRIVILEGES;


本文一二步参考:https://blog.csdn.net/weixin_37946237/article/details/81634505
第一次使用markdown感谢:https://blog.csdn.net/tyyking/article/details/79682157


版权声明:本文为hotcoffie原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。