运维操作
快速运行 MySQL DB
[root@liqiang.io]# docker run --name mariadb -e MYSQL_ROOT_PASSWORD=password -d mariadb:10.4
安装客户端
[root@liqiang.io]# cat /etc/yum.repos.d/MariaDB.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
[root@liqiang.io]# yum install MariaDB-client -y
安全设置
[root@liqiang.io]# cat /etc/my.cnf
[mysqld]
bind-address = 127.0.0.1
修改用户密码
[root@liqiang.io]# mysql -uroot -p
MariaDB [mysql]> set password for root@localhost = password('password');
授权用户远程登录
[root@liqiang.io]# mysql -uroot -ppassword
MariaDB [(none)]> use mysql;
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
GRANT ALL ON *.* TO 'myuser'@'%';
数据库操作
查看所有数据库
[root@liqiang.io]# mysql -uroot -p
MariaDB [(none)]> show databases;
创建数据库
[root@liqiang.io]# CREATE DATABASE IF NOT EXISTS test default charset utf8 COLLATE utf8_general_ci;
Table 操作
创建一张表
[root@liqiang.io]# CREATE TABLE items (
id bigint unsigned AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(50) NOT NULL,
content VARCHAR(100) NOT NULL
) ENGINE=InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
清空一张表
删除表信息的方式有两种 :
[root@liqiang.io]# truncate table table_name;
[root@liqiang.io]# delete * from table_name;
区别 :
- truncate 是整体删除 (速度较快),delete 是逐条删除 (速度较慢)
- truncate 不写服务器 log,delete 写服务器 log
- truncate 不激活 trigger (触发器),但是会重置 Identity (标识列、自增字段); delete 删除以后,identity 依旧是接着被删除的最近的那一条记录 ID 加 1 后进行记录
修改一个 field nullable
[root@liqiang.io]# ALTER TABLE mytable MODIFY mycolumn VARCHAR(255) DEFAULT NULL;
编程操作
通过 GORM 使用 MYSQL
[root@liqiang.io]# cat test_mysql.go
url = "myuser:password@tcp(127.0.0.1:3306)/test?charset=utf8&parseTime=True&loc=Local"
db, err = gorm.Open("mysql", url)
if err != nil {
return err
}