一、Mysql安装:
1.查看是否装有mysql (有输出表示已安装,无输出表示未安装;该命令可检测是否安装成功)
2.更新软件源中的所有软件列表: apt update
- apt-get 是较早的软件包管理工具,而 apt 是较新的封装工具,它被设计为更简洁易用的命令,apt 可以自动处理依赖关系,而 apt-get 需要手动安装依赖项。
- apt-get 命令与 dpkg 结合使用,用于安装、升级和删除软件包,而 apt 命令则是一个全新的命令,它可以直接安装、升级和删除软件包,也可以通过 apt-cache 命令查看软件包信息。
- apt-get 命令的更新软件包索引的命令是 “apt-get update”,而 apt 命令的更新索引的命令是 “apt update”。
- apt-get 和 apt 命令的功能非常相似,但 apt 命令更加高级、简洁易用,如果你是新手,建议使用 apt 命令。
3.安装: apt install mysql-server-8.0
apt install mysql-server //执行前,按两下tab键,获取可下载的版本
//提示可知,仅有 mysql-server-8.0可选
apt install mysql-server-8.0 //下载
4.安装完成后,重启mysql:
service mysql restart //重启mysql
或者(新的服务命令)
systemctl restart mysqld.service
二、修改root密码:
设置新密码的命令,123456为设置的密码:
alter user 'root'@'localhost' identified by '123456';
三、登录及修改root用户密码方式:
1、登录mysql。
mysql -u root -p
或者附带密码方式直接登录
mysql -uroot -p123456
2、通过执行以下命令查看对应用户的加密方式,也可以将user=’root’改成比如user=‘test’,来查看用户test的加密方式。
use mysql;
select user,plugin from user where user='root';
3、执行命令修改加密方式
alter user 'root'@'localhost' identified with mysql_native_password by '你的密码';
或者
ALTER user 'root'@'localhost' IDENTIFIED BY '123456';
4、使配置生效
flush privileges;
补充:
我们可以在终端输入以下命令,来查看MySQL中的默认用户和密码
sudo cat /etc/mysql/debian.cnf
下图所框选的就是MySQL中默认的用户名和密码(每个人的密码都不一样)
然后,我们根据这个默认的用户和密码就能登入到MySQL中
mysql -udebian-sys-maint -pXXXXXXXXXX(密码)
四、修改普通用户的加密方式:
比如:当使用mysql的可视化工具Navicat等,在进行初次连接数据库时,因为加密方式的原因报错,没办法连接成功;又或者连接 Django和Mysql配合使用,由于Django不支持新版本Mysql的加密方式,会出现如下两条报错,此时由于你Django项目的数据库用的用户非root,而是其他用户,所以需要修改其他用户的密码加密方式。
_mysql_exceptions.OperationalError: (2059, )
django.db.utils.OperationalError: (2059, )
修改方法:
1、输入登陆指令和密码并登陆:
mysql -u root -p
2、输入:
use mysql;
3、继续输入:
select user,host from user;
此时可以显示出各用户对应的host名,也就是修改指令中@后面的内容。
4、根据查询结果,紧接着输入修改加密方式指令:
例如:根据上面查询结果,test用户的host为%。所有指令如下:
alter user 'test'@'%' identified with mysql_native_password by 'test123';
注意:
(1)”%”欲连接到此Mysql数据库的客户端的IP地址,根据需求进行修正即可。%表示全部ip均可连接
(2)password就是Mysql数据库的test用户的password,根据实际情况需要修改
grant all privileges on *.* to test@'%' identified by 'test';
all privileges 表示:所有权限,也可以特指某些权限如,select,delect,insert等
*.* 表示:数据库服务器中 所有数据库,也可以特指某数据库的某个表,如:dbName.tableName
‘%’ 表示:允许除本机外的任何一台机器远程登录,也可以指定ip,如’localhost’本机,或
5、使配置生效
flush privileges;
五、Mysql编码配置/可远程连接设置:
1、修改MySQL的配置文件,vim /etc/mysql/my.cnf
方式一:
将bind-address = 127.0.0.1,注释掉
#bind-address = 127.0.0.1
或者修改为:0.0.0.0
bind-address = 0.0.0.0
或者
方式二:vim /etc/mysql/mysql.conf.d/mysqld.cnf
2、修改root的host为% 即无论在哪台主机上都能够登陆
可以看到root的host为localhost即只有本地能够登陆
update user set host='%' where user='root' and host='localhost';
修改后的root的host为%,允许任何机器能够登陆
3、添加远程访问用户
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
4、将MySQL服务进行重启
service mysql restart
或者(新的服务命令)
systemctl restart mysqld.service
以前都用service命令管理mysql,现在liunx系统升级了,有了新的更好的方法管理系统进程,现在用systemctl命令管理mysql。
Systemctl是一个systemd工具,主要负责控制systemd系统和服务管理器。 Systemd是一个系统管理守护进程、工具和库的集合,用于取代System V初始进程。Systemd的功能是用于集中管理和配置类UNIX系统。 在Linux生态系统中,Systemd被部署到了大多数的标准Linux发行版中,只有为数不多的几个发行版尚未部署。Systemd通常是所有其它守护进程的父进程,但并非总是如此。