本文讲解在自己虚拟机的Ubuntu18.04系统上安装MySQL数据库,并进行初始化配置和创建新用户并设置远程连接
一、环境准备:
1、VMware(我的是15)
2、Ubuntu18.04系统,已配置好网络环境
3、Ubuntu18.04已配置source源
二、查看系统是否存在MySQL环境
dpkg -l |grep mysql
无反应表明系统无MySQL环境,可正常安装
三、安装MySQL数据库
sudo apt install mysql-server
新装的Ubuntu18.04可能会出现如下报错:
需要根据提示执行:
sudo apt-get update --fix-missing
完成后再执行:sudo apt install mysql-server
四、检查MySQL是否安装成功
执行netstat -tab | grep mysql查看MySQL的socket是否为listen状态
netstat -tag|grep mysql
执行sudo systemctl status mysql.service查看MySQL active是否running
sudo systemctl status mysql.service
五、登录MySQL数据库
sudo mysql -u root -p
初始状态的MySQL是没有设置密码的,所以可以在输入密码那里可以不用输入密码直接登录
六、quit退出MySQL并对MySQL进行初始化操作
sudo mysql_secure_installation
#1 是否安装验证密码插件:NO
#2 输入要为root管理员设置的数据库密码:
再次输入密码:
#3 删除匿名账户: yes
#4 是否禁止root管理员从远程登录:NO
#5 是否删除test数据库并取消对它的访问权限:YES
#6 是否刷新授权表,让初始化的设定立即生效:YES
尝试使用新设置的密码进行登录:
sudo mysql -u root -p
七、配置MySQL远程访问功能
#1 编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件:
将bind-addresses = 127.0.0.1 注释掉,保存退出
有的版本可能还会有mysql-bind-addresses = 127.0.0.1,也可以注释掉
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf
#2 重启MySQL服务,使配置文件生效
sudo systemctl restart mysql-service
#3 再进入MySQL并使用mysql库
sudo mysql -u root -p
use mysql;
#4 查看user表的host和user字段
select host,user from user;
可以看到root对应的host是localhost,只允许本地连接,需要将对应host改成"%",表示允许所有ip远程连接,这里对于root账户一般可不开远程连接,一般新建账号再分配权限后开远程连接权限,我这里教程就先开远程权限了
#5 修改root用户远程访问权限
update user set host='%' where user='root';
#6 查看user表命令
select host,plugin,authentication_string from user;
(注:host为 % 表示不限制ip,localhost表示本机使用,plugin非mysql_native_password 则需要修改密码)
很明显,此时的root的plugin为auth_socket,所以需要修改密码。这里密码可以修改成原来一样的密码就行了
#7 修改用户密码命令:
alter user 'root'@'%' identified with mysql_native_password by 'new_password';
这里可能会报error1396的错误,原因是root用户已存在,解决办法是删除掉root用户,然后重新新增一个root用户
删除root用户
delete from user where user='root';
新增root用户
create user 'root'@'%';
这时我们看到authentication_string是空的,执行下面命令
alter user 'root'@'%' identified with mysql_native_password by 'new_password';
再次查看对应表信息:
#8 给root用户授权命令:
grant all privileges on *.* to 'root'@'%' with grant option;
#9 刷新使配置生效
flush privileges;
#10 退出并重启MySQL服务
sudo systemctl restart mysql
八、创建新用户并分配权限
#1 登录MySQL并查看当前用户和所对应的远程连接权限
sudo mysql -u root -p
select user,host from mysql.user;
#2 创建用户设置密码并给远程连接的权限'%'
create user 'test555'@'%' identified by 'test@123';
#3 给新用户授权
grant all privileges on *.* to 'test555'@'%' with grant option;
#4 刷新使配置生效
flush privileges;
#5 退出并重启MySQL服务,使用新用户和密码登录
sudo systemctl restart mysql.service
sudo mysql -u test555 -p
九、使用python的pymysql库简单测试远程连接情况
远程连接可以之后就能对通过python对 MySQL数据库进行相关操作