Ubuntu安装mysql
背景:最近在学习MySQL,详情可见前面的博客MySQL从入门到入土(1)和MySQL从入门到入土(2)进阶篇偏向实际生产环境,遂在Ubuntu中搭建MySQL环境模拟实际环境。
安装
在ubuntu
中安装mysql
只要一行命令就可以了 sudo apt install mysql-server
配置
注意事项
通过apt
安装的mysql
不需要像其他平台那样开启服务,因为已经默认开启,并且服务名叫做mysql
,而不是mysqld
登录
方法一:默认账户登录
查看密码使用sudo cat /etc/mysql/debian.cnf
这条查看
bot@ubuntu:~/Desktop/python/django/2$ sudo cat /etc/mysql/debian.cnf
[sudo] bot 的密码:
# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host = localhost
user = debian-sys-maint
password = SffnwAJrKhIFZ2tO
socket = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host = localhost
user = debian-sys-maint
password = SffnwAJrKhIFZ2tO
socket = /var/run/mysqld/mysqld.sock
方法二:直接进入mysql
命令:sudo mysql
本地 root 用户
到了关键的一步,其实现在你的数据库中就有一个叫做 host
字段为 localhost
的 root
的用户我们需要做如下几件事情:
- 修改初始 root 用户的密码(修为我们自己的密码)
不需要授予访问权限等操作,因为默认已经有了
重置密码
重置 root 账户密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
刷新权限
FLUSH PRIVILEGES;
远程root 用户
如果需要远程登陆:
- 创建一个
host
字段为%
的 root 用户(创建用户的同时设置密码) - 授权所有数据库的访问权限
- 刷新权限列表
有些 uu 就会很奇怪为什么要创建两个
root
用户呢?这个和mysql
的用户管理方式有关系:localhost
表示本机登录;%
表示远程登陆。
如果root
用户只有%
,那就只能除了本机外的其他计算机才能登陆 mysql server,如果用户只有localhost
,那只有本机可以登录,远程计算机不能登录 mysql server
那么 mysql 为什么要这么设计呢?可能是为了安全吧!这样我们可以为 root 设置两个不同的密码,localhost
环境下设置一个很简单的密码;%
环境下就可以极其复杂,诸如:MnRmsrdm9wjkT5XC9Y2F5b4IouAPZBfx
(注意 mysql 的密码有长度限制,好像是 32 个字符长度)
新建一个 host 为 % 的 root用户,密码随意
create user 'root'@'%' identified by 'yourpassword';
授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
刷新权限
FLUSH PRIVILEGES;
使用navicat连接,报错如下:
先关停mysql服务
sudo systemctl stop mysql
编辑mysql配置文件
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
找到如下行,并注释:
#bind-address = 127.0.0.1
再开启mysql服务
sudo systemctl start mysql
测试: