一、linux安装mysql

在windows10中安装了ubuntu18.04,需要安装mariadb

更新源或者替换源

之后进行安装

apt-get install mariadb-client

apt-get install mariadb-server
 

在windows10中安装了ubuntu18.04,需要安装mariadb

更新源或者替换源

之后进行安装

apt-get install mariadb-server
1
启动和停止

sudo /etc/init.d/mysql start
sudo /etc/init.d/mysql stop

卸载:

首先在终端中查看MySQL的依赖项:

卸载: sudo apt-get remove mysql-common

卸载:sudo apt-get autoremove --purge mysql-server-5.7

查看残留:dpkg --list|grep mysql

清除残留数据:dpkg -l|grep ^rc|awk '{print$2}'|sudo xargs dpkg -P

二、使用

1.启动关闭登录等操作

systemctl start mariadb    启动

systemctl stop mariadb    关闭

systemctl restart mariadb    重启

systemctl status mysql.service    查看状态

mysql -uroot -p    登录root用户,默认无密码

mysqladmin -uroot -p password "1234"    修改密码

mysql -uroot -p1234    以密码1234进行登录

另一种启动方式

sudo service mysqld start
sudo service mysqld stop
sudo systemctl start mariadb.service
sudo systemctl stop mariadb.service

查看mysql启动情况

service mysqld status

ps aux | grep mysqld

pidof mysqld

查看端口占用

netstat -tanlp

mysql登录

mysqld_safe --skip-grant-table     //linux下屏蔽权限登录

mysqld --skip-grant-table          //window下屏蔽权限登录

mysql> \q    登出mysql

2.更改密码

新开起一个终端输入  

 # mysql -uroot -p1234

mysql> UPDATE user SET Password=PASSWORD('newpassword') where USER='root' and host="localhost";  

mysql> FLUSH PRIVILEGES;   更新

 mysql> \q

三、SQL语句学习

mysql四-1:单表查询 - linhaifeng - 博客园

SQL语句每条语句最后一定要有分号;

1.操作文件夹(库)
    增
        create database db1 charset utf8;
    查
        show  create database db1;
        show databases;
    改
        alter database db1 charset gbk;
    删
        drop database db1;

2.操作文件(表)
    切换文件夹:use db1;
    查看当前所在的库::;select database()
    
    增
        create table t1(id int,name char);
    查
        show create table t1;
        show tables;
        desc t1;
    改
        alter table ti modify name char(6);
        alter table t1 change name NAME CHAR(7);
    删
        drop table t1;
        
3.操作文件内容(记录)
    增
        insert t1(id,name) values(1,'cpz'),(2,'yz'),(3,'sg');
    查
        select id,name from db1.t1;
        select * from db1.t1;    (不推荐)
    改
        update db1.t1 set name='SB';    (全部记录都改了)
        update db1.t1 set name='SB' where id=2;
    删
        delete from t1 where id=2;

SQL之两表关联更新 UPDATE (用一个表更新另一个表)

UPDATE 想要更新的表 SET 想要更新的表.更新字段=提供数据的表.字段,想要更新

的表.更新字段=提供数据的表.字段 FROM 提供数据的表

WHERE 想要更新的表.关联字段=提供数据的表.关联字段

⽅法1:
update table1 set field1=table2.field1 from table2
where table1.id=table2.id
--简写
update t1 set t1.c2 = t2.c2 from t2  
where t1.c1 = t2.c1

 

四、授权远程访问

Mysql授权允许远程登录后,linux中安装的mysql可以与Navicat for Mysql(可视化)等连接,在可视化软件下管理数据库。
注意:不能使用临时密码

设置密码命令:

alter user 'root'@'localhost' identified by '这里是你的密码';

授权允许远程访问
授权命令:

grant all privileges on *.* to 'root'@'%' identified by '@wjb13191835106';

注意:请把命令中的【@wjb13191835106】更改为自己的Mysql密码。

刷新授权:

flush privileges; 

此时,你的Mysql就可以被远程连接了。

关闭授权:
revoke all on *.* from dba@localhost;

五、linux下mysql 查看默认端口号与修改端口号方法

登录mysql

[root@localhost ~]# mysql -uroot -p

使用show global variables like 'port'; 命令查看端口号 默认位3306

mysql端口号的修改

1、编辑/etc/mysql/my.cnf文件  [root@localhost ~]# vi /etc/mysql/my.cnf    (我的mysql在这个路径) 2、添加port=33060;

3、重启mysql [root@localhost ~]

# /etc/init.d/mysqld restart  (或者)

systemctl start mariadb    启动

systemctl stop mariadb    关闭

Linux连接MySQL命令表
Linux环境下通过一些命令快速操作数据库。

bash
# 连接mysql(注:-h、-P、-u、-p后面可以不用加空格)
mysql -h主机地址 -P端口 -u用户名 -p用户密码

# 显示数据库
mysql> show databases;

# 使用某个数据库
mysql> use xxx;

# 查看该数据库中的表
mysql> show tables;

# 显示数据表的结构
mysql> describe 表名;

# 显示表中的记录(注意表名大小写)
mysql> select * from 表名;

# 创建数据库
mysql> create database 数据库名;

# 建表  
use 库名;
create table 表名 (跟上字段列表);
# 例如:创建表user,表中有id(序号,自增),name(姓名),gender(性别),birthday(出身年月)四个字段  
mysql> use blog;  
mysql> create table user (id int(3) auto_increment not null primary key, name char(8),gender char(2),birthday date);
mysql> describe name;

# 往表中增加数据
# 例如:增加几条相关纪录。  
mysql> insert into user values('','张三','男','2019-01-01');  
mysql> insert into user values('','李四','女','2020-06-01');
mysql> select * from name;

# 修改表中数据
# 例如:将张三的出生年月改为2019-06-01
mysql> update user set birthday='2019-01-01' where name='张三';  

# 删除某表中的数据  
# 例如:删除名字是张三的数据。  
mysql> delete from user where name='张三';  

# 删库和删表  
mysql> drop database 库名;
mysql> drop table 表名;

# 退出mysql
mysql> exit (回车)

【问题解决】在用Navicat配置远程连接Mysql数据库时遇到如下报错信息,这是由于Mysql配置了不支持远程连接引起的。

centos 7 mariadb卸载 windows卸载mariadb_数据库

2.在安装Mysql数据库的主机上登录root用户:

mysql -u root -p

centos 7 mariadb卸载 windows卸载mariadb_sql_02

3.依次执行如下命令:

use mysql;
 
select host from user where user='root';
可以看到当前主机配置信息为localhost.

centos 7 mariadb卸载 windows卸载mariadb_centos 7 mariadb卸载_03

4.将Host设置为通配符%

Host列指定了允许用户登录所使用的IP,比如user=root Host=192.168.1.1。这里的意思就是说root用户只能通过192.168.1.1的客户端去访问。 user=root Host=localhost,表示只能通过本机客户端去访问。而%是个通配符,如果Host=192.168.1.%,那么就表示只要是IP地址前缀为“192.168.1.”的客户端都可以连接。如果Host=%,表示所有IP都有连接权限。 

注意:在生产环境下不能为了省事将host设置为%,这样做会存在安全问题,具体的设置可以根据生产环境的IP进行设置;

update user set host = '%' where user ='root';
Host设置了“%”后便可以允许远程访问。

centos 7 mariadb卸载 windows卸载mariadb_数据库_04

5.Host修改完成后记得执行flush privileges使配置立即生效

flush privileges;

centos 7 mariadb卸载 windows卸载mariadb_sql_05


6.使用navicat 成功连接至mysql

问题:pymysql.err.OperationalError: (1698, “Access denied for user ‘root’@‘localhost’”)

$ sudo mysql -u root 

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

六、Mysql备份操作

mysqldump常用操作示例

  • 备份全部数据库的数据和结构 mysqldump -uroot -p123456 -A > /data/mysqlDump/mydb.sql
  • 备份全部数据库的结构(加 -d 参数) mysqldump -uroot -p123456 -A -d > /data/mysqlDump/mydb.sql
  • 备份全部数据库的数据(加 -t 参数) mysqldump -uroot -p123456 -A -t > /data/mysqlDump/mydb.sql
  • 备份单个数据库的数据和结构(,数据库名mydb) mysqldump -uroot -p123456 mydb > /data/mysqlDump/mydb.sql
  • 备份单个数据库的结构 mysqldump -uroot -p123456 mydb -d > /data/mysqlDump/mydb.sql
  • 备份单个数据库的数据 mysqldump -uroot -p123456 mydb -t > /data/mysqlDump/mydb.sql
  • 备份多个表的数据和结构(数据,结构的单独备份方法与上同) mysqldump -uroot -p123456 mydb t1 t2 > /data/mysqlDump/mydb.sql
  • 一次备份多个数据库 mysqldump -uroot -p123456 --databases db1 db2 > /data/mysqlDump/mydb.sql

还原mysql备份内容

有两种方式还原,第一种是在MySQL命令行中,第二种是使用SHELL行完成还原

  1. 在系统命令行中,输入如下实现还原: mysql -uroot -p123456 < /data/mysqlDump/mydb.sql
  2. 在登录进入mysql系统中,通过source指令找到对应系统中的文件进行还原: mysql> source /data/mysqlDump/mydb.sql

格式:mysqldump mysql8.0以上的默认参数 -h主机名 -P端口 -u用户名 -p密码 --databases 数据库名    --tables 表名 > 文件名.sql
例如: mysqldump --column-statistics=0 -h 1.11.111.111 -p 3306 -uroot -pXXXX --databases DBC --tables aaa > /home/cpz/work/data/Mysql_backups/data/mydb.sql

#! /bin/bash

# 保存备份个数,备份31天数据
number=31
# 备份保存路径
backup_dir=/home/cpz/work/data/Mysql_backups/data
# 日期
dd=`date +%Y-%m-%d-%H-%M-%S`
# 备份工具
tool=mysqldump
# IP
ip=xxxxxxxxxx
# PORT
port=xxxx
# 用户名
username=xxxx
# 密码
password=xxxx
# 将要备份的数据库
database1_name=DBC
database2_name=DBYS
database3_name=PASSWORD

#如果文件夹不存在则创建
if [ ! -d $backup_dir ]; 
then     
    mkdir -p $backup_dir; 
fi

# 执行保存语句,mysqldump默认有--lock-tables操作,备份前锁定所有数据库表
$tool --column-statistics=0 -h $ip -P$port -u$username -p$password --databases $database1_name $database2_name $database3_name > $backup_dir/$dd.sql

#写创建备份日志
echo "create $backup_dir/$dd.dupm" >> $backup_dir/log.txt

#找出需要删除的备份
delfile=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | head -1`

#判断现在的备份数量是否大于$number
count=`ls -l -crt  $backup_dir/*.sql | awk '{print $9 }' | wc -l`

if [ $count -gt $number ]
then
  #删除最早生成的备份,只保留number数量的备份
  rm $delfile
  #写删除文件日志
  echo "delete $delfile" >> $backup_dir/log.txt
fi