搭建开发用的单机、单实例mysql数据库,基于mysql5.7.39。
一、规划
1 目录规划
mysql配置文件 - /etc/my.cnf
mysql软件目录 - /opt/zbt/mysql5.7.39
mysql数据目录 - /opt/zbt/mysqldata
2 用户规划
使用zbt:zbt用户启动、关闭和运维数据库,不创建OS级别的服务
二、安装
mysql-5.7.39-el7-x86_64.tar.gz,可以到这个位置下载
https://downloads.mysql.com/archives/community/
上传到/opt/zbt,解压缩,改名为mysql5.7.39,保证/opt/zbt/mysql5.7.39下直接出现bin等一系列mysql软件目录
root用户修改主配置文件,有则直接修改,没有则创建改文件
这是唯一用到root用户的地方
vim /etc/my.cnf
[mysqld]
bind-address=0.0.0.0
port=3306
user=mysql
basedir=/opt/zbt/mysql5.7.39
datadir=/opt/zbt/mysqldata
socket=/opt/zbt/mysqldata/mysql.sock
log-error=/opt/zbt/mysqldata/mysql.err
pid-file=/opt/zbt/mysqldata/mysql.pid
#character config
character_set_server=utf8mb4
三、创建数据库实例
初始化(一次性)
cd /opt/zbt/mysql5.7.39/bin
./mysqld --defaults-file=/etc/my.cnf --initialize
查找初始的root口令:
cat /opt/zbt/mysqldata/mysql.err | grep "A temporary password is generated"
启动数据库:
./mysqld_safe --defaults-file=/etc/my.cnf &
登录数据库并修改默认口令:
./mysql -uroot -p'找到的口令' -S /opt/zbt/mysqldata/mysql.sock
alter user "root"@"localhost" IDENTIFIED BY "passw0rd";
use mysql;
select host, user, password_expired, account_locked from user;
得到如下结果:
+-----------+---------------+------------------+----------------+
| host | user | password_expired | account_locked |
+-----------+---------------+------------------+----------------+
| localhost | root | N | N |
| localhost | mysql.session | N | Y |
| localhost | mysql.sys | N | Y |
+-----------+---------------+------------------+----------------+
这时唯一可用的root,其host为localhost,即表示只有在本机,才能使用这个账户,无法远程连mysql的时候使用root
不考虑了远程登录的安全,可以酌情改为:
update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;
参考 - 关闭数据库:
ps -ef | grep "mysqld --defaults-file=/etc/my.cnf" | grep -v grep | awk '{print $2;}' | xargs kill
四、创建数据库对象
1 创建数据库和用户
创建一个用户、一个数据库,并将该数据库授权给该用户访问
./mysql -uroot -p'passw0rd' -S /opt/zbt/mysqldata/mysql.sock
CREATE DATABASE devdb01;
CREATE USER 'user1'@'%' IDENTIFIED BY 'passw0rd';
grant all on devdb01.* to 'user1'@'%';
FLUSH PRIVILEGES;
创建普通用户并赋权后,后面开发中,就可以都使用user1来操作数据,不需要再使用root。
2 创建测试业务表和数据
--建表测试
./mysql -uuser1 -p'passw0rd' -S /opt/zbt/mysqldata/mysql.sock
create table table1(id int(18), name varchar(25));
insert into table1(id, name) values(1234, "王子英");
commit;
select id, name from table1;
drop table table1;
3 创建正式的业务表和数据
--department表
CREATE TABLE department(
dptid int PRIMARY KEY auto_increment,
dptname VARCHAR(20) NOT NULL
);
--employee表
CREATE TABLE employee(
empid int PRIMARY KEY auto_increment,
empname VARCHAR(10) NOT NULL,
phone VARCHAR(11),
departmentid int,
address VARCHAR(50),
CONSTRAINT fk_dptid FOREIGN KEY(departmentid) REFERENCES department(dptid)
);
--插入数据
INSERT INTO department VALUES (1, '客服部');
INSERT INTO department VALUES (2, '财务部');
INSERT INTO department VALUES (3, '后勤部');
INSERT INTO employee VALUES (1, '李华', '13737445685', 1, '武汉市洪山区光谷大道288号');
INSERT INTO employee VALUES (2, '张建国', '18725489687', 3, '北京市朝阳区安贞路127号');
INSERT INTO employee VALUES (3, '周晓', '13985647124', 2, '昆明市五华区滇缅大道');
INSERT INTO employee VALUES (4, '李莉', '15896582415', 1, '武汉市汉阳区人民中路瑞典小镇');
INSERT INTO employee VALUES (5, '张晓红', '13865486874', 3, '');
commit;
标签:opt,最简,开发人员,INTO,MySQL,zbt,mysql,mysqldata,root
From: https://www.cnblogs.com/bmwhero/p/16951501.html