给root设置初始密码:
[root@localhost ~]# mysqladmin -u root -p flush-privileges password "admin123/"
配置rooot用户允许远程访问数据库
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
方法1: 用SET PASSWORD命令
首先登录MySQL。
格式:mysql> set password for 用户名@localhost = password('新密码');
例子:mysql> set password for root@localhost = password('123');
方法2:用mysqladmin
格式:mysqladmin -u用户名 -p旧密码 password 新密码
例子:mysqladmin -uroot -p123456 password 123
方法3:用UPDATE直接编辑user表
首先登录MySQL。
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;
方法4:在忘记root密码的时候,可以这样
以windows为例:
1. 关闭正在运行的MySQL服务。
2. 打开DOS窗口,转到mysql\bin目录。
3. 输入mysqld --skip-grant-tables 回车。--skip-grant-tables 的意思是启动MySQL服务的时候跳过权限表认证。
4. 再开一个DOS窗口(因为刚才那个DOS窗口已经不能动了),转到mysql\bin目录。
5. 输入mysql回车,如果成功,将出现MySQL提示符 >。
6. 连接权限数据库: use mysql; 。
6. 改密码:update user set password=password("123") where user="root";(别忘了最后加分号) 。
7. 刷新权限(必须步骤):flush privileges; 。
8. 退出 quit。
9. 注销系统,再进入,使用用户名root和刚才设置的新密码123登录。
Mysql 创建用户:
[root@localhost ~]# mysql -u root -p -e "GRANT USAGE ON *.* TO 'jingpan'@'localhost' IDENTIFIED BY 'jingpan';"
上例会建立名为jingpan的用户,并允许它从localhost 登录MySQL。其中*.* 表示所有
数据库和所有表。同时这里将其密码设置为jingpan
他现在还没有任何权限:不能查看数据库,更不能写入数据。
[root@localhost ~]# mysql -u root -p -e "GRANT SELECT ON *.* TO 'jingpan'@'localhost';"
使jingpan只能的查看数据库存权限
[root@localhost ~]# mysql -u root -p -e "GRANT SELECT ON *.* TO 'jingpan'@'localhost';"
查询某个用户所拥有的权限
[root@localhost ~]# mysql -u root -p -e "SHOW GRANTS FOR 'jingpan'@'localhost' \G"
授与用户所有权限
[root@localhost ~]# mysql -u root -p -e "GRANT ALL ON *.* TO 'jingpan'@'localhost';"
连接到服务器
[root@localhost ~]# mysql -u jingpan -p
在test数据库中创建book表,并且有三列
MariaDB [(none)]> CREATE TABLE test.books (book_id INT,title TEXT,status INT);
列出test数据库所有内容
MariaDB [(none)]> SHOW TABLES FROM test;
指定默认数据库
USE test;
指定完默认数据后,可以省略数据库存名
MariaDB [test]> SHOW TABLES;
查询表结构
MariaDB [test]> DESCRIBE books;
向book表是插入三条数据
MariaDB [test]> INSERT INTO book VALUES (100, 'Heart of Darkness', 0);
MariaDB [test]> INSERT INTO book VALUES (101, 'The Catcher of the Rye', 1);
MariaDB [test]> INSERT INTO book VALUES (102, 'My Antonia', 0);
查询book表中的内容
MariaDB [test]> SELECT * FROM books
加入WHERE子句
MariaDB [test]> SELECT * FROM books WHERE sattus = 1;
SLECT 语句以\G结尾。有时候这样更易读,
通常能避免因域的内容太长,令表格变得太宽而换行。
MariaDB [test]> SELECT * FROM book WHERE status=0 \G
*************************** 1. row ***************************
book_id: 100
title: Heart of Darkness
sattus: 0
*************************** 2. row ***************************
book_id: 102
title: My Antonia
sattus: 0
2 rows in set (0.00 sec)
更新books,将status 的值设为1,作用于book_id 等于102 的所有行
MariaDB [test]> UPDATE books SET sattus = 1 WHERE book_id =102;
同时更改两列内容
MariaDB [test]> UPDATE books SET title = 'THe Catcher in the Rye', sattus = 1 WHERE book_id = 101;
创建status_names;
MariaDB [test]> CREATE TABLE status_names (status_id INT,status_name CHAR(8));
在status_names中插入两列数据
MariaDB [test]> INSERT INTO status_names VALUEA(0,'Inactive'),(1,'Active');
将两个表关联起来
MariaDB [test]> SELECT book_id, title ,status_name FROM books JOIN status_names WHERE status = status_id;
在建立books 表时,我们其实可以将status 列声明为TEXT 或CHAR,并为每条记录打上
Active 或Inactive。但如果你要为books 输入成千上万行数据,显然打0 或1 更简单,而且
不容易打错字(例如Actve)。摆弄数据库是很无聊的,但如果你的表结构建得好,SQL 语
句写得好,那么情况将有所改善,而且也能节省你的时间和资源。
更改表名,把book表改为books表
MariaDB [test]> ALTER TABLE book RENAME TO books;
删除books表;
MariaDB [test]> DROP TABLE books;