云 & 网站

Ubuntu(Linux)安装及配置MySQL

2020-04-24  本文已影响0人  大成小栈

1. Ubuntu中的apt命令

apt 命令不仅可以更新软件包列表索引、执行安装新软件包、升级现有软件包,还能够升级整个 Ubuntu 系统(apt 是 Debian 系操作系统的包管理工具)。与更专业的 APT(Advanced Packaging Tool) 工具 apt-get 和 apt-cache 相比,apt用起来更简单,用户体验更好。常见用法如下:

// 搜索可用安装包
$ [sudo] apt search mysql

// 更新包索引文件
$ [sudo] apt update
// 安装包
$ [sudo] apt install nginx
// 安装指定版本的包
$ [sudo] apt install vim=2:8.0.1453-1ubuntu1
// 安装本地的 deb 包文件
$ [sudo] apt install name.deb
// 这种方法会自动下载并安装依赖的包。

// 安装系统中有更新的包
// upgrade 命令会升级已安装的包,同但不移除任何包。它的目标是确保可能的侵入式升级最小化:
$ [sudo] apt update
$ [sudo] apt upgrade

// 删除包
// 通过下面两个命令可以删除使用 apt install 安装的包
// 其中 remove 命令会保留配置文件,而 purge 命令会把配置文件一起删除!
$ [sudo] apt remove nmap
$ [sudo] apt purge nmap

2. 安装mysql

可以在ubuntu的命令行中直接执行apt命令:

$ apt search mysql

会显示mysql相关的安装包的信息,
输入 $ apt install mysql- ,此时,按tab键会有提示信息如下:


执行

$ apt install mysql-server

即安装完成,可以只安装mysql-server,然后通过命令行进行一系列查看、配置、操作表等一系列动作即可。如果你使用的操作系统有UI界面,你也可以安装相应的可视客户端,类似于MySQLWorkBench等。

3. 修改mysql的root密码

在用apt安装mysql的过程中,全部自动安装,中间并没有让输入密码等。安装完后,由于没有设置密码,用root身份,通过命令:

$ mysql -uroot -p

可以直接登录(如果让输入密码,直接点回车即可)。

注意:登录之后虽然可以在终端进行查看、修改、配置等一系列操作,但是,在本地web服务中登录mysql过程中会报错。

我们用SpringBoot打包web服务中,application.properties文件中关于数据库的配置如下:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/todo?charset=utf8mb4&useSSL=false&serverTimezone=GMT%2b8

spring.datasource.username=root
spring.datasource.password=6666666

具体报错信息为:

com.zaxxer.hikari.pool.HikariPool  : HikariPool-1 - Exception during pool initialization.

java.sql.SQLException: Access denied for user 'root'@'localhost'
  at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) ~[mysql-connector-java-8.0.19.jar!/:8.0.19]

原因是:mysql的root账户没有设置密码。

修改root密码步骤:

  1. 无密码登录mysql

  2. 显示所有数据库文件
    mysql> show databases;

  1. 使用mysql数据库文件
    mysql> use mysql;
  1. 使用sql语句修改root密码
    mysql> update user set authentication_string=PASSWORD("这里输入你要改的密码") where User='root';
  1. 更新系缓存密码
    mysql> update user set plugin="mysql_native_password"
  1. 刷新操作权限
    mysql> flush privileges;
  1. mysql> quit 推出

此时,在试一遍mysql -uroot -p,登录,故意将密码输入错误,即会提示
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

则root密码修改成功!

4. 修改数据库问价及表的编码格式

当我们通过SpringBoot中的接口想数据库中添加数据时,添加数据为英文时正常,但添加数据含中文时,所记录的数据为乱码。本地SpringBoot的application.properties文件中关于数据持久化的格式配置为:

spring.jpa.properties.hibernate.hbm2ddl.auto=update
//spring.jpa.properties.hibernate.hbm2ddl.auto=create
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
//spring.jpa.show-sql=true

//测完关闭
spring.jpa.open-in-view=true

spring.http.encoding.force=true
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8

均为UTF-8格式。

登录mysql,其中todo为我们自建的数据库文件,
mysql> show tables;
mysql> use todo;
mysql> show tables;
mysql> select * from t_todo;
mysql> show variables like 'character%';

可见本地 mysql server 数据使用的编码为"latin1",我们需要将其改为utf8 。
cd /etc/mysql/mysql.conf.d
vim mysqld.cnf
添加如下变量:
character-set-server = utf8
保存并退出(先esc 再:wq!)。

再次 mysql> show variables like 'character%';,可见编码已改。
我们再次通过web服务接口向数据库todo添加数据,发现从todo中获取的数据仍是乱码,这是因为,我们虽然改了mysql server的数据编码格式,但是todo这个库是之前建的,其表中的数据格式仍为"latin1"。
通过mysql> show create table todo;命令可查看:

修改表的数据编码格式:
mysql> ALTER TABLE t_todo CONVERT TO CHARACTER SET utf8;

至此,从安装到数据编码都已完成!

5. mysql常用命令

// 登录
mysql -u root -p
// 关闭、启动、重启
[sudo] service mysql stop
[sudo] service mysql start
[sudo] service mysql restart
// 退出
mysql> exit
mysql> quit

// 查看所有db文件
mysql> show databases;
// 选择db文件
mysql> use name;
// 创建db文件
mysql> create database name
// 删除db文件
mysql> drop database name


//// 表操作

// 列出所有表
mysql> show tables

// 创建一个名为t_name的新表:
create table t_name(
id int(10) not null auto_increment primary key,
name varchar(40),
pwd varchar(40)
) charset=gb2312;

// 删除名为t_name的数据表
drop table t_name

// 显示名为t_name的表的数据结构
describe t_name
或
show columns from t_name

// 将表t_name中的记录清空
delete from t_name

// 显示表t_name中的记录
select * from t_name

// 复制表结构
mysqldump -uUSER -pPASSWORD --no-data DATABASE TABLE > table.sql


// 更改表得的定义把某个栏位设为主键
ALTER TABLE t_name ADD PRIMARY KEY (col_name)

// 把主键的定义删除
ALTER TABLE t_name DROP PRIMARY KEY (col_name)

// 在t_name表中增加一个名为col_name的字段且类型为varchar(20)
alter table t_name add col_name varchar(20)

// 在t_name中将col_name字段删除
alter table t_name drop col_name

// 修改字段属性,注若加上not null则要求原字段下没有数据
alter table t_name modify col_name varchar(40) not null
(注,SQL Server200下的写法:Alter Table t_name Alter Column col_name varchar(30) not null)

// 修改表名:
alter table t_name rename to new_tab_name

// 修改字段名:
alter table t_name change old_col new_col varchar(40)
(注:必须为当前字段指定数据类型等属性,否则不能修改)

// 用一个已存在的表来建新表,但不包含旧表的数据
create table new_t_name like old_t_name


//// 数据备份与回复:

执行外部的sql脚本:

当前数据库上执行:mysql < input.sql
指定数据库上执行:mysql [表名] < input.sql

数据传入命令: load data local infile "[文件名]" into table [表名]

备份数据库:(dos下)
mysqldump --opt school>school.bbb
mysqldump -u [user] -p [password] databasename > filename (备份)
mysql -u [user] -p [password] databasename < filename (恢复)

参考文章:
https://www.cnblogs.com/huangguojin/p/9510903.html
https://blog.csdn.net/sinat_36811967/article/details/72823902

上一篇下一篇

猜你喜欢

热点阅读