MySQL配置

MySQL配置
BarbecueMySQL基本配置
一、MySQL 8.0/5.7的安装
注意:Ubuntu 20以及以上的版本无需此操作
下面的wget命令用于下载mysql-apt-config ,也可以从本地服务器当中下载到Linux中
1 | wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb |
安装mysql-apt-config
1 | sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb |
使用上下方向键移动选项和enter键选定选项,使得MySQL服务端的版本是8.0(或者是5.7)
升级ubuntu的apt和安装mysql:
升级ubuntu的apt
1 | sudo apt update |
安装服务端和命令行客户端
1 | sudo apt-get install mysql-server |
如果出现密码输入请输入密码
如果出现密码验证模式的选择,最好选择”Legacy Authentication Method”。
二、用户登陆和密码修改
使用下面的命令如果可以登录成功,说明安装成功,否则需要执行手动修改密码的过程:
1 | # 首先在命令行当中输入下列命令 |
手动修改登录密码:
1 | sudo su |
在登录之后输入如下的命令可以修改root的访问方式(下面方法适用于5.7版本):
1 | use mysql; |
下面方法适用于8.0版本:
1 | use mysql; |
下面的password换成你的密码:
1 | alter user 'root'@'localhost' identified with mysql_native_password by 'password'; |
1 | flush privileges; |
1 | quit |
连接到MySQL服务端
使用命令行客户端连接mysql服务端的命令如下:
1 | mysql -u root -p |
随后在提示符之后输入密码即可 ,登录成功会显示命令提示符
mysql>
三、删除MySQL的方法
请不要自己随意卸载mysql,很容易导致无法再次安装。如需卸载,请参考下面的链接:
Ubuntu18.04彻底删除MySQL数据库青蛙组长的博客*-CSDN*博客ubuntu 删除mysql
四、外网连接数据库
本教程只是Linux中的设置,具体软件的安装(navicat、DataGrip)请参考其他教程
在一台电脑上安装了MySQL服务器后,默认是不允许外网可以连接至该服务器上的MySQL的,不进行额外配置的话可能会出现如下两种连接错误的情况。
解决问题一
首先使用如下命令查看3306端口绑定状态
1 | sudo netstat -an | grep 3306 |
3306端口是默认绑定在本地IP 127.0.0.1上的,所以外网无法访问该主机的3306端口。
打开MySQL的配置文件:
1 | sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf |
讲端口port =3306解除注释:
1 | port = 3306 |
找到如下内容的一行并注释掉:
1 | # bind-address = 127.0.0.1 |
将mysqlx-bind-address的网址改成0.0.0.0:
1 | mysqlx-bind-address = 0.0.0.0 |
保存后重启MySQL服务
1 | sudo systemctl restart mysql |
使用如下命令查看端口绑定状态
1 | sudo netstat -an | grep 3306 |
没有127.0.0.1就是正确的
解决问题二
问题二是因为MySQL自带的权限控制限制了外网访问MySQL服务器,在Ubuntu主机上使用命令行连接至本地MySQL数据库
1 | sudo mysql -root -p |
输入密码
选择mysql数据库
1 | use mysql |
查看user表信息
1 | select user,host from user; |
发现账户只允许localhost访问,所以外网无法访问。
新建一个用户进行连接
运行以下命令创建一个新用户:
1 | CREATE USER 'username'@'%' IDENTIFIED BY 'password'; |
将username
替换为您要创建的用户名,将password
替换为该用户的密码。'localhost'
表示用户只能从本地主机连接到MySQL服务器。
因为要允许该用户从任何主机连接到MySQL服务器,所以将'localhost'
替换为'%'
了。
授予用户对所有数据库的全部权限:
1 | GRANT ALL PRIVILEGES ON *.* TO 'username'@'%'; |
运行以下命令使更改生效:
1 | FLUSH PRIVILEGES; |
再查看表中的信息
1 | select user,host from user; |
如果想通过root用户进行连接
可以使用如下命令给外网访问授权
1 | grant all privileges on *.* to 'root'@'[允许的ip]' identified by '[密码]' with grant option; |
其中[允许的ip]如果设置为%的话则表示所有ip都可以访问,[密码]表示外网访问的密码是什么。比如我设置成所有ip都可访问,密码是root,则命令如下:
1 | grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option; |
再查看表中的信息
1 | select user,host from user; |
经过以上操作后,就可以在可视化数据库软件连接的地方输入你的用户名和密码进行连接。