如果你在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
sudo apt-get remove mysql-*
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
它会跳出一个对话框,你选择yes就好了
首先去 MySQL官网 下载一个文件
在文件夹中找到下载的具体文件(如果你的Ubuntu是虚拟机,则将这个文件上传到系统),并执行(下面的**是省略的意思,你自己要改)
sudo dpkg -i mysql-apt-config_0.*.****_all.deb
然后会出现一个紫色框界面。
它有四个选项。选择第一个,enter确定,
然后又会出现一个紫色框界面,选择8.0那个。enter确定,
会回到第一个紫色框,此时按上下键选择 ok,enter确定。
最后更新数据源
sudo apt-get update
现在执行
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
直接授权你的管理员账号(默认是root)远程访问:
update user set host = '%' where user ='root';
FLUSH PRIVILEGES;
GRANT ALL ON 表示所有权限,% 表示通配所有 host,可以访问远程。
下面是一个简单例子,授权用户test1admin远程访问数据库test1
创建测试数据库test1:
create database test1;
为数据库test1创建对应用户test1admin,密码123,
CREATE USER 'test1admin'@'%' IDENTIFIED BY '123';
下面是一些代码的说明:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
字段 | 说明 |
---|---|
username | 你将创建的用户名, |
host | 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,,如果想让该用户可以从任意远程主机登陆,可以使用通配符%. |
password | 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器. |
授权用户test1admin管理数据库testq1
GRANT ALL PRIVILEGES ON test1.* TO 'test1'@'%';
下面是一些代码示例
其中databaseName和tableName都可以用通配符 *
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'; |
取消授权 |
FLUSH PRIVILEGES;
本文一二步参考:https://blog.csdn.net/weixin_37946237/article/details/81634505
第一次使用markdown感谢:https://blog.csdn.net/tyyking/article/details/79682157