1. 程式人生 > 其它 >MySQL最簡安裝 - 開發人員用

MySQL最簡安裝 - 開發人員用

搭建開發用的單機、單例項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;