MySQL 快速上手
最后编辑于: 2016-04-25游戏名目
数据库
关系型数据库
- 数据以表格的形式出现
- 每行为各种记录名称
- 每列为记录名称所对应的数据域
- 许多行和列组成一张表单
- 若干的表单组成数据库
SQL
MySQL 是最流行的关系型数据库管理系统
安装 MySQL
使用发行版的包管理器安装
首先安装mariadb
$ sudo pacman -S mariadb
然后初始化 MariaDB 的目录
$ sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
然后使用 systemd
使能并启动 mysqld.service
守护进程
$ sudo systemctl enable mysqld.service
$ sudo systemctl start mysqld.service
之后启动机器 mysqld.service
会作为守护进程自动启动
然后执行以下脚本来进行一些初始化安全设置
$ sudo mysql_secure_installation
基础入门
MySQL 数据库系统使用 客户端-服务器mysqld
作为服务器mysql
通过mysqld.service
添加到守护进程mysql
使用
$ mysql -u root -p
即可作为数据库的 root 用户登录
创建帐号
添加用户分为两步CREATE USER
) + 授权GRANT
)oncemore
666666
mydb
MariaDB> CREATE USER 'oncemore'@'localhost' IDENTIFIED BY '666666';
MariaDB> GRANT ALL PRIVILEGES ON mydb.* TO 'oncemore'@'localhost';
MariaDB> FLUSH PRIVILEGES;
MariaDB> quit
FLUSH PRIVILEGES
更新已经加载到内存当中的授权信息quit
exit
Ctrl+D
;
\g
用户创建成功后
$ mysql -u oncemore -p
登入新建的用户
配置选项
前面已经见过了-u
-p
-u
-p
mysql --help
-p[password]
--password=[password]
ps
localhost
)-h
localhost
-S file_name
--socket=file_name
/run/mysql/mysql.sock
如果尝试直接运行mysql
$ mysql
ERROR 1045 (28000): Access denied for user 'guanhao'@'localhost' (using password: NO)
而忽略掉某些选项时'-h'
mysqld --help --verbose
/etc/my.cnf
/etc/mysql/my.cnf
~/.my.cnf
不同位置的配置文件具有不同的作用范围~/.my.cnf
mysqld --print-defaults
如果需要直接使用mysql
~
创建一个.my.cnf
[client]
host = localhost
user = oncemore
password = 666666
注意到[client]
[mysql]
[mysqld]
- 用
#
、 ;
- 如果配置值包含空格
需要用, "
- 后出现的配置会覆盖之前的出现的配置
- 命令行选项优先级高于配置文件选项
如使用, mysql -u root -p
最后
$ chmod 600 ~/.my.cnf
创建数据库
创建数据库和表并插入数据
语法 | 作用 |
---|---|
CREATE DATABASE |
创建数据库 |
CREATE TABLE |
创建表 |
INSERT INTO |
插入一行数据 |
示例oncemore
MariaDB [(none)]> CREATE DATABASE mydb;
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> USE mydb;
Database changed
MariaDB [mydb]> CREATE TABLE langs (name VARCHAR(20), level INT);
Query OK, 0 rows affected (0.23 sec)
MariaDB [mydb]> INSERT INTO langs (name, level) VALUES('cpp',60);
Query OK, 1 row affected (0.01 sec)
MariaDB [mydb]> INSERT INTO langs (name, level) VALUES('python',70);
Query OK, 1 row affected (0.03 sec)
MariaDB [mydb]> INSERT INTO langs (name, level) VALUES('javascript',NULL);
Query OK, 1 row affected (0.03 sec)
MariaDB [mydb]> SELECT * FROM langs;
+------------+-------+
| name | level |
+------------+-------+
| cpp | 60 |
| python | 70 |
| javascript | NULL |
+------------+-------+
3 rows in set (0.03 sec)
说明mydb
数据库mydb
内创建了表langs
NULL
SELECT * from
语法打印整个langs
\G
mysql
-E
--vertical
执行方式
除了使用mysql
mysql
-e
;
$ mysql -e "SELECT COUNT(*) from langs;SELECT NOW();" mydb
+----------+
| COUNT(*) |
+----------+
| 3 |
+----------+
+---------------------+
| NOW() |
+---------------------+
| 2016-04-21 16:12:08 |
+---------------------+
除此之外mysql