数据库MySQL


MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件。

安装与设置

安装MySQL8.0版本

可以直接使用apt命令安装sudo apt-get install mysql-server
但这样安装的mysql版本是5.7的,需要添加MySQL APT repository,后再安装

  • https://dev.mysql.com/downloads/repo/apt/ 下载mysql-apt-config_x.x.x-x_all.deb,执行如sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb,选择使用8.0的版本
  • 更新apt源:Update package information from the MySQL APT repository
  • 安装mysql:sudo apt-get install mysql-server

官方教程:https://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-setup
centos安装教程,参见:http://www.runoob.com/mysql/mysql-install.html
安装完毕后查看版本:

ulysses@ulysses:~$ mysql --version
mysql  Ver 8.0.13 for Linux on x86_64 (MySQL Community Server - GPL)

登录:

ulysses@ulysses:~$ mysql -u root -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

输入系统root密码并不能登录,需要修改root密码。

修改root用户密码

官方在8.0的参考手册中给出了如何修改数据库root用户密码的教程:https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html 包含windows环境或是unix/linux环境下设置。

  1. 登录mysql运行的系统(可以使用数据库新添加的linux系统用户mysql);
  2. 停止当前运行的mysql服务:sudo service mysql stop或者使用kill命令杀死进程;
  3. 创建一个文本文件,里边写一行语句用来修改root用户的密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

8.0版本的密码安全性要求更高,需要大写字母、数字、特殊字符。
4. 若不是使用mysql登录系统,给新创建的文本添加mysql用户的读权限
5. 运行: mysqld --init-file=/home/me/mysql-init,启动mysql
6. mysql 成功启动后删除这个文本;

这样就能使用系统用户root来登录数据库:

ulysses@ulysses:~/PycharmProjects/test_base$ sudo su
root@ulysses:/home/ulysses/PycharmProjects/test_base# mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.13 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> \q
Bye

可以查看当前的用户:

mysql> select user from mysql.user;
+------------------+
| user             |
+------------------+
| debian-sys-maint |
| mysql.session    |
| mysql.sys        |
| root             |
+------------------+
4 rows in set (0.01 sec)

创建用户和数据库

创建普通的数据库用户:

mysql> create user dbuser@localhost identified by 'pasword';
ERROR 1146 (42S02): Table 'mysql.role_edges' doesn't exist
mysql> \q
Bye
root@ulysses:/home/ulysses/PycharmProjects/test_base# mysql_upgrade -u root -p
Enter password: 

若出现mysql.role_edges不存在的使用mysql_upgrade -u root -p 修复,再次创建用户:

mysql> create user dbuser@localhost identified by '***';
Query OK, 0 rows affected (0.12 sec)

这时候使用就可以使用dbuser登录数据库

root@ulysses:/home/ulysses/PycharmProjects/test_base# mysql -u dbuser -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.

新用户是无法直接使用create database创建数据库的

mysql> create database exampledb;
ERROR 1044 (42000): Access denied for user 'dbuser'@'localhost' to database 'exampledb'

需要在root用户下创建新的数据库,并将其权限赋予新用户才行:GRANT ALL ON 'dbname'.* TO 'your_mysql_name'@'your_client_host';使用root登录mysql,并创建新的数据库:

mysql> create database ex1;
Query OK, 1 row affected (0.06 sec)
mysql> grant all privileges on ex1.* to dbuser@localhost;
Query OK, 0 rows affected (0.14 sec)

切换到dbuser用户,查看数据库

root@ulysses:/home/ulysses/PycharmProjects/test_base# mysql -u dbuser -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 41
Server version: 8.0.13 MySQL Community Server - GPL

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| ex1                |
| information_schema |
+--------------------+
2 rows in set (0.00 sec)

MySQL 操作

MySQL数据库操作符合一般的sql语言。

基本sql操作

创建数据表并插入数据:

mysql> use ex1
Database changed
mysql> create table student (id int primary key, name varchar(20));
Query OK, 0 rows affected (0.35 sec)

mysql> insert into student values (1, 'ulysses'),(2, 'radier');
Query OK, 2 rows affected (0.10 sec)
Records: 2  Duplicates: 0  Warnings: 0

mysql> select * from student;
+----+---------+
| id | name    |
+----+---------+
|  1 | ulysses |
|  2 | radier  |
+----+---------+
2 rows in set (0.00 sec)

数据的导出

导入导出时可能有权限的问题,最好使用root用户登录进行操作,而且可以不用输入密码直接登录。

SELECT … INTO OUTFILE 导出

使用 SELECT … INTO OUTFILE 语句导出数据到文本上:

mysql> select * from student;
+----+---------+
| id | name    |
+----+---------+
|  1 | ulysses |
|  2 | radier  |
| 10 | jasen   |
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值