以下命令适合修改任何mysql用户,仅以root为例。
一、拥有原来的myql的root的密码;
# mysql -uroot -p
Enter password: 【输入原来的密码】(如果安装完mysql第一次设置root密码,则直接回车)
mysql>use mysql;
mysql> update user set password=password("123456") where user='root';
mysql> flush privileges;
mysql> exit;    
第一种方法:SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
第二种方法:mysqladmin -u用户名 -p旧密码 password 新密码
第三种方法:update user set Password = password('root') where User='root';
 flush privileges; 
二、忘记原来的myql的root的密码;
首先,你必须要有操作系统的root权限了。也就说需要以root的身份登录到操作系统,然后进行一下操作。
1、编辑MySQL配置文件my.cnf,
vi /etc/my.cnf
#编辑文件,找到[mysqld],在下面添加一行skip-grant-tables[mysqld]
skip-grant-tables
:wq!  #保存退出service mysqld restart  #重启MySQL服务
2、进入MySQL控制台
mysql -uroot -p
#直接按回车,这时不需要输入root密码。
3、修改root密码
update mysql.user set password=password('123456') where User="root" and Host="localhost";
flush privileges; 
grant all on *.* to 'root'@'localhost' identified by '123456' with grant option; 
4、取消/etc/my.cnf中的skip-grant-tables
vi /etc/my.cnf
编辑文件,找到[mysqld],删除skip-grant-tables这一行
:wq!  #保存退出 
5、重启mysql
service mysqld restart
#重启mysql,这个时候mysql的root密码已经修改为123456 
6、进入mysql控制台
mysql -uroot -p123456
大功告成! 
二、修改数据库的密码
1、首先要先知道,如果以root权限登录数据库的话,你可以看到mysql下有个user表,里面存储的是全部的用户信息,包括user,host,password,查询的命令:
1
select user,host,password from mysql.user;
1
2、如果要修改用户的信息,则可以通过sql语句直接修改,例如,要修改用户名为admin 的密码为admin://查询所有的用户信息
mysql>select user,host,password from mysql.user;
//修改admin用户的密码
mysql>update user set password=password('admin') where user='admin';
//刷新权限表(必须)
mysql>flush privileges;
//修改成功之后要退出mysql数据库,重新登录一下
mysql>exit;3、关于给用户授权的问题:
//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
  @>mysql -u root -p
  @>密码
  //首先为用户创建一个数据库(phplampDB)
  mysql>create database phplampDB;
  //授权phplamp用户拥有phplamp数据库的所有权限。
  >grant all privileges on phplampDB.* to phplamp@localhost identified by '1234';
  //刷新系统权限表
  mysql>flush privileges;
  mysql>其它操作
  /*
  如果想指定部分权限给一用户,可以这样来写:
  mysql>grant select,update on phplampDB.* to phplamp@localhost identified by '1234';
  //刷新系统权限表。
  mysql>flush privileges;
  */4、关于创建新用户的问题:
“`
//登录MYSQL
  @>mysql -u root -p
  @>密码
  //创建用户
  mysql> insert into mysql.user(Host,User,Password) values(“localhost”,”phplamp”,password(“1234”));
  //刷新系统权限表
  mysql>flush privileges;
  这样就创建了一个名为:phplamp 密码为:1234 的用户。
  然后登录一下。
  mysql>exit;
  @>mysql -u phplamp -p
  @>输入密码
  mysql>登录成功 
授予用户最大的权限,所有的权限
grant all privileges on *.* to  username@'%' indentified by 'password';grant all privileges on *.* to username@'%' identified by 'password';
移除权限
revoke all privileges on . from 用户@"%" identified by '密码';
数据库的备份与恢复
备份
mysqldump -u root -p --all-databases > /tmp/db.sql
数据导入,方式有2种
source /tmp/db.sql;
第二种
mysql -uroot -p < /tmp/db.sql
第三种
navicat
第四种,如果你数据量特别大的话,使用第三方工具
xtrabackup
mysql主从复制
mysql主从复制背景
1.如果你是单点数据库
2.主备数据库,挂了一台主库,我可能还有千千万万个备用的数据库
mysql主从复制的步骤
1.在matser主库上的操作,开启主库功能
systemctl stop mariadb
编辑/etc/my.cnf
写入如下信息
[mysqld]
server-id=10
log-bin=qishi-logbin
systemctl start mariadb
2.在主库创建用户,用于同步数据
create user yuanqing@'%' identified by 'yq666';
授予普通用户,slave的身份
grant replication slave on . to 'yuanqing'@'%';
3.锁定数据库的库表,禁止写入
这个命令是全局读锁定,执行了命令之后所有库所有表都被锁定只读。一般都是用在数据库联机备份,这个时候数据库的写操作将被阻塞,读操作顺利进行。
解锁语句是:UNLOCK TABLES;
flush table with read lock;
记录下主库的状态,记录下,日志文件的名字,和位置
show master status;
4.导出主库的数据
mysqldump -u root -p --all-databases > /tmp/db.sql
5.远程传输主库的数据,给从库,进行导入
scp /tmp/db.sql root@192.168.11.167:/tmp/
6.解锁主库的锁,写入数据,查看从库是否同步
unlock tables;连接远程数据库: 
1、显示密码 
如:MySQL 连接远程数据库(192.168.5.116),端口“3306”,用户名为“root”,密码“123456” 
C:/>mysql -h 192.168.5.116 -P 3306 -u root -p123456 
2、隐藏密码 
如:MySQL 连接本地数据库,用户名为“root”, 
C:/>mysql -h localhost -u root -p 
 Enter password: 
二、配置mysql允许远程链接 
     默认情况下,mysql帐号不允许从远程登陆,只能在localhost登录。本文提供了二种方法设置mysql可以通过远程主机进行连接。 
一、改表法 
    在localhost登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host"  项,将"localhost"改称"%"  
例如: 
  #mysql -u root  -p  
   Enter password: 
    …… 
   mysql>  
  mysql>update user  set host = '%' where user = 'root';   
  mysql>select host,  user from user;   
二、授权法 
    例如: 你想myuser使用mypassword(密码)从任何主机连接到mysql服务器的话。  
  mysql>GRANT ALL  PRIVILEGES ON *.* TO 'myuser'@'%'IDENTIFIED BY 'mypassword' WITH GRANT OPTION;    
  如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码   
  mysql>GRANT ALL  PRIVILEGES ON *.* TO 'myuser'@'192.168.1.3'IDENTIFIED BY   
  'mypassword' WITH GRANT OPTION;   
   mysql>FLUSH  PRIVILEGES   
  使修改生效,就可以了  
 常见问题: 
 1、在采用法二授权法之后,无法在本地登录mysql(如:#mysql -u root -p -h  192.168.5.116
 Enter password: 
 ERROR 1045 (28000): Access denied for user  'root'@'loadb116' (using password: YES)
 上例中loadb116是主机名.
 解决方法: 
 1、这时可以使用:mysql  -u  root -p 登录,进入到mysql后。
 mysql> grant all privileges on *.* to 'root'@'loadb116'    
         identified by '123456' with grant option; 
 Query OK, 0 rows affected  (0.00 sec)
 mysql> flush  privileges; 
 Query OK, 0 rows affected (0.00  sec)
 2、在本地使用ip地址登录
 #  mysql -u root -p -h  192.168.5.116  
 Enter password: 
 Welcome to the MySQL  monitor.  Commands end with ; or /g.
 Your MySQL connection id is 60
 Server  version: 5.1.45 MySQL Community Server (GPL)

 Type 'help;' or '/h' for  help. Type '/c' to clear the buffer.

 mysql>