02_CentOS7安装MySQL,python3


写在前面,后面所有的软件包均放在/opt/software/下,安装均在/opt/apps/下

1.安装mysql8

1.1 资源

链接:https://pan.baidu.com/s/1csFQM-T_FATThGuw2rmOAA
提取码:good

1.2 检查虚拟机是否有mariadb

CentOS7一般有一个自带的MySQL体系的数据mariadb,需要先卸载了,顺序执行下面命令

rpm -qa|grep mariadb
rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64
rpm -qa|grep mariadb

1.3下载mysql8并放入/opt/software/下,并开始搭建

# 解压MySQL8安装包
tar -zxvf mysql-8.0.21-el7-x86_64.tar.gz
# 更名并移动
mv mysql-8.0.21-el7-x86_64 mysql8
mv mysql8 /opt/apps/
# 进入mysql8目录下,创建mysql8数据文件存放目录
cd /opt/apps/mysql8/
mkdir mysqldb
# 创建MySQL组和用户
groupadd mysql
# 创建用户(-s /bin/false参数指定mysql用户仅拥有所有权,而没有登录权限)
useradd -r -g mysql -s /bin/false mysql
# 给mysql目录及其子文件添加用户组和用户
chown -R mysql:mysql ./
# 创建MySQL配置文件
vi /etc/my.cnf
# 放入以下内容
# -------------------------------------
[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录
basedir=/opt/apps/mysql8
# 设置mysql数据库的数据的存放目录
datadir=/opt/apps/mysql8/mysqldb
# 允许最大连接数
max_connections=10000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
# -------------------------------------
# 安装mysql
cd /opt/apps/mysql8/bin
./mysqld --initialize --console

1.4启动mysql

cd /opt/apps//mysql8/support-files/
./mysql.server start

初次运行会报一个错误

我们不是专业的dba,在这里我们就暴力点,直接给mysql8赋予所有的权限就好了

chmod 777 /opt/apps/mysql8/
cd /opt/apps/mysql8/support-files
./mysql.server start


启动成功

1.5登录MySQL并修改密码

cd /opt/apps/mysql8/bin
./mysql -uroot -pu3&k=d+yw+1y

此时会报一个错误

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我看了很多安装博客,安装的时候都没有提到,我每次安装的时候都有,属实是恶心到我了。在这里搞一个通用的解决办法。先打开前面的my.cnf配置文件,在[mysqld]下面加上一行skip-grant-tables,保存,然后执行 /opt/apps/mysql8/support-files/mysql.server restart重启MySQL服务器,再次登录,只输入登录名,输入密码的时候按下回车,一次不行就两次,就绵密登陆进去了。
修改登陆密码,

use mysql

说明:8.0版本不允许在跳过策略 skip-grant-tables 时修改密码。

先清除root用户密码,删除my.conf添加的 skip-grant-tables 后,通过空密码正常访问数据库后,就可以修改密码了。
补充:5.7/5.5 版本在此时就可以直接改一个新密码了。

将密码清空以后,输入exit;退出MySQL,然后去配置文件中删除skip-grant-tables保存,重启mysql,再次输入密码进入,然后就可以修改密码了。
重新进入mysql,输入修改密码操作,又会出现一个错误,我的耐心真的快被耗尽了。

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

此时输入 set password='一个足够复杂你又记得住的密码';

记住,不要输入一个太简单的密码,不然又会报一个错误。这个错误如下

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

如果你非要设置123456这种简单密码,按照如下操作
执行如下两条语句:

set global validate_password.policy=0;
set global validate_password.length=1;

然后再执行set password='一个足够复杂你又记得住的密码';

1.6配置允许远程登录

use mysql
update user set user.Host='%'where user.User='root';
flush privileges;
quit

1.7关闭防火墙

这里其实可以专门在防火墙中开放3306端口号,但是后面学习nginx的时候,频繁使用各种端口号,因此直接关闭就好了。

# 查看防火墙状态
systemctl status firewalld
# 暂时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙
systemctl disable firewalld
# 重启防火墙
systemctl restart firewalld.service

在Windows上使用vscode连接mysql,博主我测试成功。

1.8配置MySQL的path

vi /etc/profile然后末尾加上echo $PATH=$PATH:/opt/apps/mysql8/bin,最后执行source /etc/profile就可以在任意目录下使用mysql登录mysql了。

1.9设置mysql开机自启动

首先配置MySQL服务,vi /etc/systemd/system/mysql.service本来是没有这个文件的,但是这条命令会在该目录下帮我们创建mysql.service。在里面写上如下内容

Description=mysql
[Service]
User=mysql
LimitNOFILE=100000
LimitNPROC=100000
ExecStart=/opt/apps/mysql8/bin/mysqld_safe --defaults-file=/etc/my.cnf
[Install]
WantedBy=multi-user.target

紧接着就可以像操作虚拟机的网络服务一样操作MySQL

# 设置开机自启
systemctl enable mysql
# 启动后查看状态
systemctl status mysql

重启虚拟机,MySQL就完成了密码修改,开机自启,远程登陆。资源已经给出来了,照着这个操作的话,可能遇到的问题都已经讲出来了,基本没有问题了。
快累死了。后续在更新mysql的卸载。因为这个不是通过yum安装的,使用rpm -qa|grep mysql是看不到MySQL的,不好使用rpm命令卸载MySQL。

2.安装python3

Centos7的yum默认使用的是python2,如果将python2卸载了,会出现很多问题,而将yum和python3整合起来,我还不会,不过这两个版本可以共存,接下来安装python3

2.1在/opt/software/下下载python。我这里下载的是写博客时的最新版本。

wget https://www.python.org/ftp/python/3.10.2/Python-3.10.2.tgz
tar -zxvf Python-3.10.2.tgz
mv Python-3.10.2.tgz python3

2.2安装编译相关工具

yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install libffi-devel -y

2.3编译python3

# 创建python工作目录
mkdir /usr/localpython3
cd python3
# 编译
./configure --prefix=/usr/local/python3
make && make install

如过出现这些提示,说明安装成功。

输入 /usr/local/python3/bin/python3.10看看python是否启动,博主我这里已经启动了。

2.4配置python软链接

# 查看当前python软连接
ll /usr/bin/ |grep python
lrwxrwxrwx    1 root root           7 Nov 26  2018 python -> python2
lrwxrwxrwx    1 root root           9 Nov 26  2018 python2 -> python2.7
-rwxr-xr-x      1 root root        7216 Jul 13  2018 python2.7
# 默认系统安装的是python2.7
# 删除python软连接
rm -rf /usr/bin/python
#添加python3的软链接 
ln -s /usr/local/python3/bin/python3 /usr/bin/python
# 查看python默认版本
python -V
Python 3.10.2 
# 删除默认pip软连接,并添加pip3新的软连接
rm -rf /usr/bin/pip
#添加 pip3 的软链接 
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip

2.5修改yum配置

因为其要用到python2才能执行,否则会导致yum不能正常使用(不管安装 python3的那个版本,都必须要做的)

vi /usr/bin/yum 
把 #! /usr/bin/python 修改为 #! /usr/bin/python2 
vi /usr/libexec/urlgrabber-ext-down 
把 #! /usr/bin/python 修改为 #! /usr/bin/python2
vi /usr/bin/yum-config-manager
#!/usr/bin/python 改为 #!/usr/bin/python2