一、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配置了不支持远程连接引起的。
2.在安装Mysql数据库的主机上登录root用户:
mysql -u root -p
3.依次执行如下命令:
use mysql;
select host from user where user='root';
可以看到当前主机配置信息为localhost.
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设置了“%”后便可以允许远程访问。
5.Host修改完成后记得执行flush privileges使配置立即生效
flush privileges;
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行完成还原
- 在系统命令行中,输入如下实现还原: mysql -uroot -p123456 < /data/mysqlDump/mydb.sql
- 在登录进入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