注意:如果是配合python使用的话,连接数据库的时候注意python2使用的是mysqldb,python3使用的是pymysql。详细看第三点。
一,首先设置安全组
开放MySQL的默认端口3306
二,安装MySQL服务
在官网查找最新版本的下载链接:
https://dev.mysql.com/downloads/repo/yum/
2.1 在linux下载MySQL源:
wget https://repo.mysql.com//mysql80-community-release-el8-1.noarch.rpm
2.2 在linux安装MySQL源
yum -y localinstall mysql80-community-release-el7-1.noarch.rpm
2.3 安装MySQL
yum -y install mysql-community-server
2.4 启动MySQL
systemctl start mysqld
启动没有报错,看一下状态:
systemctl status mysqld.service
2.5 设置开机启动
systemctl enable mysqld
systemctl daemon-reload
2.6 查看数据库的初始密码
cat /var/log/mysqld.log | grep password
2.7 登录进入数据库
mysql -uroot -p
密码用上面查到的密码,直接复制粘贴,不会显示出密码的。
2.8 修改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
修改成功之后,通过 exit; 命令退出 MySQL,然后通过新密码再次登陆。
2.9 通过以下命令,进行远程访问的授权
create user 'root'@'%' identified with mysql_native_password by '你的密码';grant all privileges on *.* to 'root'@'%' with grant option;flush privileges;
2.10 配置默认编码为UTF-8
修改/etc/my.cnf配置文件,在[mysqld]下添加编码配置,如下所示:
character_set_server=utf8init_connect='SET NAMES utf8'
2.11 重启mysql服务
systemctl restart mysqld
2.12 查看下编码
mysql> show variables like '%character%';
最后(看需要操作,我的是在安全组设置了开放3306端口这里我就不用设置了)
systemctl status firewalld
systemctl start firewalld
输入下面命令,开放3306端口:
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
注意:可能会出现的问题1:端口被占用问题(Address already in use)
-
当我们不小心异常关闭导致了之前的端口,实际上仍未被释放,这时候倘若我门想要再使用这个端口,就会抛出 “error:[Errno 98] Address already in use” 这样的异常。
-
这时候我们只需要找到正在利用这个端口的进程,并得到这个进程的PID,杀死这个PID对应的这个进程,就能够有效释放被占用的端口,后续再使用的时候就不会再抛出端口已经被占用的异常信息。
-
找到被占用的指定端口号所对应的进程信息并呈现,括号处填写对应要查找的端口号:
sudo lsof -i:(port)
4.关闭这个进程(PID):
sudo kill (PID)
三,python 3.7 安装pymysql及用法
3.1 安装pymysql
pip install PyMySQL
3.2 django项目连接pymysql数据库
views.py文件中:
import pymysql.cursors
config = {'host': '服务器公网ip','port': 3306,'user': '数据库用户名','password': '数据库密码','db': '数据库名','charset': 'utf8','cursorclass': pymysql.cursors.DictCursor,'autocommit': True,
}connection = pymysql.connect(**config)
def index(request):with connection.cursor() as cursor:sql = 'INSERT INTO project (id, name, domain_id, man,cluster_id,update_time,create_time,description) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)'cursor.execute(sql, (str(uuid.uuid4()), "test", str(uuid.uuid4()), 'jiankunking', 'QD',now, now, '这是一条测试数据'));connection.commit()connection.close();
注意连接数据库的时候需要配置:
'autocommit': True,
没有这个就会出现pymysql查询不到表中最新插入的数据的问题。详细看:https://www.jianshu.com/p/cc8561dac9ee