美文网首页云 & 网站
Ubuntu(Linux)安装及配置MySQL

Ubuntu(Linux)安装及配置MySQL

作者: 大成小栈 | 来源:发表于2020-04-24 15:21 被阅读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

    相关文章

      网友评论

        本文标题:Ubuntu(Linux)安装及配置MySQL

        本文链接:https://www.haomeiwen.com/subject/lycfwhtx.html